《软件技术基础实验四栈和队列的操作实现.pdf》由会员分享,可在线阅读,更多相关《软件技术基础实验四栈和队列的操作实现.pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-优质-电子科技大学 电子工程 学院 标 准 实 验 报 告 (实验)课程名称 软件技术基础 学生姓名:学 号:指导教师:-优质-一、实验名称 实验四:栈和队列的操作实现 二、实验目的 理解栈和队列的基本概念,栈和队列操作的基本方法以及其编程实现。通过本实验的两个项目的编程、调试和运行结果的比较,分析栈和队列的差别。三、实验内容 1、设计一个容量为 4 的循环队列,编程实现如下操作,并显示各步骤操作后队列的内容:A、队列初始化为空;B、将 1、2、3 三个数据依次做入队操作;C、做两次出队操作(1、2 出队);D、将 4、5、6 三个数据依次做入队操作;E、将数据 7 做入队操作;2、设计一个
2、容量为 4 的顺序栈,编程实现如下操作,并显示各步骤操作后栈的内容:A、栈初始化为空;B、将 1、2、3 三个数据依次做入栈操作;C、做两次出栈操作;D、将 4、5、6 三个数据依次做入栈操作;E、将数据 7 做入栈操作;四、实验程序 1.循环队列程序#include#include#define true 1#define false 0#define maxnum 5 -优质-typedef struct int datamaxnum;int front;int rear;queuetype;void main()void initiatequeue(queuetype*q);int en
3、ter(queuetype*q,int x);int deletequeue(queuetype*q);void printqueue(queuetype*q);queuetype*q;q=(queuetype*)malloc(sizeof(queuetype);initiatequeue(q);enter(q,1);enter(q,2);enter(q,3);printf(入队操作后:n);printqueue(q);printf(n 两次出队操作后:n);deletequeue(q);deletequeue(q);printqueue(q);printf(n 三次入队操作后:n);ente
4、r(q,4);enter(q,5);enter(q,6);printqueue(q);printf(n 第四次入队操作后:n);-优质-enter(q,7);void initiatequeue(queuetype*q)/初始化队列 q-front=q-rear=0;int enter(queuetype*q,int x)/入队操作 if(q-rear)+1)%maxnum=q-front)printf(队列已满,不能进行入队操作n);return(false);else q-rear=(q-rear+1)%maxnum;q-dataq-rear=x;printf(成功插入%dn,x);ret
5、urn(true);int deletequeue(queuetype*q)/出队操作 if(q-rear=q-front)printf(队列已空n);return(false);else-优质-q-front=(q-front+1)%maxnum;printf(成功删除n);return(q-dataq-front);void printqueue(queuetype*q)/输出队列 int l;if(q-front=q-rear)printf(队列已空);return;l=q-front;printf(结果是n);while(1)l=(+l)%maxnum;printf(%dn,q-dat
6、al);if(l=q-rear)break;2.顺序栈程序#include#include#define true 1#define false 0#define maxnum 4-优质-typedef struct int datamaxnum;int top;stacktype;void main()void initiatestack(stacktype*s);int pushstack(stacktype*s,int x);int popstack(stacktype*s);int printstack(stacktype*s);stacktype*s;s=(stacktype*)ma
7、lloc(sizeof(stacktype);initiatestack(s);printf(入栈操作后:n);pushstack(s,1);pushstack(s,2);pushstack(s,3);printstack(s);printf(n 两次出栈操作后:n);popstack(s);popstack(s);printstack(s);printf(n 三次入栈操作后:n);pushstack(s,4);pushstack(s,5);pushstack(s,6);printstack(s);printf(n 第四次入栈操作后:n);-优质-pushstack(s,7);void ini
8、tiatestack(stacktype*s)/初始化 s-top=-1;int pushstack(stacktype*s,int x)/入栈操作 if(s-top=maxnum-1)printf(栈已满,不能进行入栈操作n);return(false);else s-top+;s-datas-top=x;return(true);int popstack(stacktype*s)/出栈操作 if(s-toptop-;return(s-datas-top+1);int printstack(stacktype*s)/输出 int i;if(s-top0)printf(栈为空n);return(false);printf(结果是:n);for(i=0;itop;i+)printf(%dn,s-datai);return(true);五、实验结果-优质-