资源描述:
《数据结构实验 栈和队列》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验名称:栈和队列班级:学号:________姓名:报告日期:一、实验目的及要求1.栈的顺序存储和链式存储结构的类型定义方法及其基本操作算法2.队列的顺序存储和链式存储结构的类型定义方法及其基本操作算法3.掌握栈、队列的思想及其存储实现4.掌握栈、队列的常见算法的程序实现二、实验内容1.编写函数,采用链式存储实现栈的初始化、入栈、出栈操作。2.编写函数,采用顺序存储实现栈的初始化、入栈、出栈操作。3.编写函数,采用链式存储实现队列的初始化、入队、出队操作。4.编写函数,采用顺序存储实现队列的初始化、入队、出队操作。5.编写一个主函数
2、,在主函数中设计一个简单的菜单,分别调试上述算法。三、实验结果四、实验总结编写函数,分别采用链式存储和顺序存储实现栈的初始化、入栈、出栈操作,以及编写函数,采用链式存储和顺序存储实现队列的初始化、入队、出队操作。通过对这次实验练习,对利用C语言进行编程有了进一步感悟和理解,同时也在课堂学习之后,对顺序存储和链式存储的算法思想有了更好的掌握,也认识到在C语言编写程序时,函数有很大的作用,在编程中,通过编辑函数和调用函数可以解决很多问题,以后应多加练习。源代码:#include#include#de
3、fineMAXSIZE256typedefintdatatype;typedefstructnode{datatypedata;structnode*next;}StackNode,QNode,*LinkStack;typedefstruct{datatypedata[MAXSIZE];intfront,rear;intnum;inttop;}SeqStack,C_SeQueue;typedefstruct{QNode*front,*rear;}LQueue;LinkStackInit_LinkStack();LinkStackPu
4、sh_LinkStack(LinkStacktop,datatypex);LinkStackPop_LinkStack(LinkStacktop,datatype*s);SeqStack*init_SeqStack();intPush_SeqStack(SeqStack*S,datatypex);intPop_SeqStack(SeqStack*S,datatype*p);LQueue*Init_LQueue();voidIn_LQueue(LQueue*q,datatypex);intOut_LQueue(LQueue*q,dat
5、atype*s);C_SeQueue*init_SeQueue();intIn_SeQueue(C_SeQueue*q,datatypex);intOut_SeQueue(C_SeQueue*q,datatype*p);intmain(){intn,m,t=1;while(t){printf("");printf("1.链栈");printf("2.顺序栈");printf("3.链队");printf("4.顺序队");printf("5.结束");printf("请选择代号进行操作:");scanf("%
6、d",&n);switch(n){case1:{LinkStackL=NULL;while(t){printf("");printf("1.初始化");printf("2.入栈");printf("3.出栈");printf("4.返回上一层");scanf("%d",&m);if(m==4)break;else{switch(m){case1:L=Init_LinkStack();break;case2:{LinkStackp;datatypex;printf("请输入x:");scanf("%d",&x)
7、;L=Push_LinkStack(L,x);p=L->next;while(p){printf("%d",p->data);p=p->next;}break;}case3:{datatypex,*s;LinkStackp;s=&x;L=Pop_LinkStack(L,s);p=L->next;while(p){printf("%d",p->data);p=p->next;}printf("出栈数:%d",x);break;}case4:break;}}}}break;case2:{SeqStack*S;while(t){print
8、f("");printf("1.初始化");printf("2.入栈");printf("3.出栈");printf("4.返回上一层");scanf("%d",&m);if(m==4)break;else{swi