您好,欢迎访问三七文档
计算机科学与技术系实验报告专业名称网络工程课程名称数据结构项目名称c语言相关知识实验班级网络工程(2)学号1604032042姓名张孝敏同组人员无实验日期2017.11.30一、实验题目假设以数组se[m]存放循环队列的元素,同时设变量rear和num分别作为队尾指针和队中元素个数记录。试讨论判别此循环队列的队满条件,写出相应入队和出队算法,并通过运行验证之。二、问题分析创建数组se[m]存储循环队列的元素,并设变量rear和num分别作为队尾指针和队中元素个数记录。实现出队和入队操作。完成这些功能需要解决的关键问题是建立队列,插入一个对列元素和队列元素的出队。1、数据的输入形式和范围:队列元素为整数,插入的队列元素也为整数。2、结果的输出形式:结果输出的可以是队列元素,可是出队或入队的队列。三、概要设计为了实现上述程序功能,需要:①构建一个空队列②:实现队列元素的入队功能③:实现队列元素的出队功能④:队列的输出⑤:在屏幕上显示菜单操作四、详细设计实现概要设计中所有步骤的全部功能:1)建立一个空的顺序表。在主函数中声明了四个子函数:set()入队函数insert()出队函数del()输出函数display()12main输出display表达式出队del入队insert表达式五、调试分析本次程序完成出队的实现方法是将队首元素删除,符合队列先进先出的特点,同样,入队操作是将元素添加到队尾。六、测试数据与实验结果截图最终运行结果如图所示图二七、附录(附源代码)#includestdio.h#includemalloc.h#definemaxlen100typedefstructnode{intse[maxlen];intrear,num;}seqstack;seqstack*set(){seqstack*s;s=(seqstack*)malloc(sizeof(seqstack));s-rear=0;s-num=0;returns;}seqstack*insert(seqstack*p,intx){if(p-num=maxlen)printf(队列已满!\n);else{if(p-rearmaxlen){p-se[p-rear]=x;p-rear++;p-num++;}if(p-rear=maxlen){p-se[0]=x;p-rear=1;p-num++;}}returnp;}seqstack*del(seqstack*p){p-num--;returnp;}voiddisplay(seqstack*p){inti;printf(当前队列为:);if(p-num=p-rear){for(i=0;ip-num;i++)printf(%d,p-se[p-rear-p-num+i]);}elsefor(i=0;ip-num;i++)printf(%d,p-se[(maxlen+p-rear-p-num+i)%maxlen]);}voidmain(){seqstack*s;intx;s=set();printf(队列实验\n);printf(输入队列的元素、当输入0是表示输入结束\n);scanf(%d,&x);while(x!=0){s=insert(s,x);scanf(%d,&x);}do{printf(----------------------------------\n);printf(1.队列元素出队即删除\n);printf(2.输入要插入队列的元素\n);printf(0.退出\n);printf(请选择你需要对该队列的操作:);scanf(%d,&x);switch(x){case1:s=del(s);display(s);printf(\n);break;case2:printf(请输入要插入的数据元素:);scanf(%d,&x);s=insert(s,x);display(s);printf(\n);break;}}while(x!=0);printf(1604032042张孝敏网络工程2班\n);}得分(百分制)
本文标题:实验报告
链接地址:https://www.777doc.com/doc-4268135 .html