共2页
____大学实验报告课程名称数据结构实验项目实验一线性结构
(二)一一栈和队列院系信息学院计类系专业班级计类50姓名学号指导老师日期批改日期成绩实验目的.熟练掌握栈的存储结构及相关典型操作。
2.熟练掌握队列的存储结构及相关典型操作。二实验内容及要求实验内容:建立链式栈,实现栈的初始化、进栈、出栈等典型操作。
2建立循环队列,实现队列的初始化、进队、出队等典型操作。实验要求:键盘输入数据;
2.屏幕输出运行结果。
3要求记录实验源代码及运行结果。
4.运行环境:VC 三实验过程及运行结果循环队列ttincludeO#includeOftdefineOKttdefineERROR0ttdefineOVERFLOW-2defineMA_QSIZE0大队列长度typedefstruct(int_base始化的动态分配存储空间intfront;intrear;SqQueue始化队列intInitQueue(SqQueueQ)=(int_)malloc(MA_QSIZEsizeof(int):if(!e_it(OVERFLOW)储分配失败=0;returnOK队操作intEnQueue(SqQueueQ)(inte;if( )%MA_QSIZE断队满printf(,z队列已满,不能入队n);returnERROR;)printf(请输入入队兀素:“);scanf(%d,e);=e队二 )%MA_QSIZE尾指针后移returnOK队操作intDeQueue(SqQueueQ)(inte;if二断队空printfC队列已为空n);returnERROR;)e二头出队一printf(,z输出的岀队兀素为:“);printfC,%dne);= l)%MA_QSIZE头下表后移returnOK列长度intQueueLength(SqQueueQ)(return列遍历intQueueTraverse(SqQueueQ)(printf(“遍历结果为:);while!=printf(%d、);= l)%MA_QSIZE;printf(n);returnOK;intmainintn;为入队_n);2为出队_n);3为队列长度_n);4为遍历_n);0为退出_n);SqQueueQ;InitQueue(Q);printf(_输入printfC_输入printf(_输入printf(_输入printf(_输入printf(_n)while(scanf(%d,n),n)switch(n)case:EnQueue(Q);break;case2:DeQueue(Q);break:case3:printfC队列长度为%dn,z,QueueLength(Q);break;case4:QueueTraverse(Q);break;)return0;链式栈#includeO#include#defineOK#defineERROR0#defineOVERFLOW-2typedefintStatus;typedefintSElemType;typedefstructnodeSElemTypedata;structnode_ne_t;SLnode,_SLinkList;typedefstructSLinkListtop,base:intlen;S_LinkList的初始化StatusCreat_S(S_LinkListS)(intn;SLinkListp,q;printf(茂的初始化,请输入数据,以-结束:n);=(SLinkList)m且lloc(sizeof(SLnode);=(SLinkList)m且lloc(sizeof(SLnode);ne_t=;q二;=0;while(scanf(d,n),n!二-)(P二(SLinkList)malloc(sizeof(SLnode);p-data=n;ne_t=p;p-ne_t=q;q=p; 9q=ne_t;while(q!=lprintf(%dn,q-data);q=q-ne_t;printf(_n);returnOK栈StatusPush_S(S_LinkListS)inte;printf(请输入进栈兀素:“);scanf(%d,e);SLinkListp,q;q二ne_t;p=(SLinkListinalloc(sizeof(SLnode);p-data二e;ne_t=p;p-ne_t=q;q=p; ;returnOK栈StatusPop_S(S丄inkListS)SLinkListp;p=ne_t;if(p!=printf(“出栈兀素为%dnp-data);returnOK;)intmainSLinkLists;inta;printf(“_输入为栈的初始化_n);printf(_输入2为入栈_n);printf(_输入3为出栈_n);printf(_输入0为退出_n);printf(l,_nH)_while(scanf(n%dH,a),a)switch(a)case:Creat_S(s);break;case2:Push_S(s);break;case3:Pop_S(s);break;return0;四调试情况、设计技巧及体会为了避免顺序栈的存储结构所带来的在操作中需要移动大量数据的缺点,采用链栈,具有动态特性,不用设置头结点。队列是一种先进后出带的线性表,一个链队列由头指针和尾指针唯一确定,所以建立链表的时候,需要在对头加一个头结点,头指针指向头结
举报
