数据结构实验四队列的实现.doc_第1页
数据结构实验四队列的实现.doc_第2页
数据结构实验四队列的实现.doc_第3页
数据结构实验四队列的实现.doc_第4页
数据结构实验四队列的实现.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告姓名学号实验组实验时间指导教师成绩实验项目名称队列的实现实验目的1掌握循环队列和链式存储思想及其存储实现。2掌握队列的常见算法的程序实现。实验环境运行Visual c+的微机一台实验内容1循环队列的初始化、入队、出队、显示、判空操作。2采用链式存储实现队列的初始化、入栈、出栈、显示、判空操作。3编写一个主函数,调试上述算法实验数据1.循环队列的运行结果:2.链式队列的运行结果:实验总结本次实验出现的错误:1.在调试循环队列源程序的过程中,入队函数“void EnQueue(Queue &a,ElemType item)”,当队满的情况下,for循环的退出条件应为“i=a.rear%a.maxsize”,a.rear的赋值语句应为“a.rear=(a.rear+a.maxsize)%a.maxsize”;2.在调试链式队列的过程中,显示队列函数“void DisplayQueue(LinkQueue a)”,将形参“a”写成了“&a”,导致程序结果在显示完队列过后,队列变空。本次实验基本达到了实验目的,但对队列的算法还不够熟悉,特别是一些细节上容易犯错,使自己在调试过程中花费太多时间,降低了编写程序的效率。指导教师意见签名: 年 月 日1.循环队列源程序#includeusing namespace std;typedef int ElemType;struct QueueElemType *p;int front;int rear;int maxsize;void InitQueue(Queue &a)/*初始化队列*/a.maxsize=10;a.p=new ElemTypea.maxsize;if(!a.p)cout分配空间失败endl;exit(1);a.front=a.rear=0;bool EmptyQueue(Queue &a)/判断队列是否为空return a.front=a.rear;void EnQueue(Queue &a,ElemType item)/*入队操作*/if(a.rear%a.maxsize+1=a.front|a.rear=a.maxsize-1)a.p=(ElemType*)realloc(a.p,2*a.maxsize*sizeof(ElemType);if(a.rear!=a.maxsize-1)for(int i=0;i=a.rear%a.maxsize;i+)a.pi+a.maxsize=a.pi;a.rear=(a.rear+a.maxsize)%a.maxsize;a.pa.rear=item;a.maxsize=2*a.maxsize;elsea.rear=(a.rear+1)%a.maxsize;a.pa.rear=item;bool OutQueue(Queue &a,ElemType &item)/*出队操作*/if(EmptyQueue(a)cout队列为空endl;return false;a.front=(a.front+1)%a.maxsize;item=a.pa.front;return true;void DisplayQueue(Queue a)/*显示队列中元素*/if(EmptyQueue(a)cout队列为空endl;exit(1);cout出口- ;while(a.rear!=a.front)a.front=(a.front+1)%a.maxsize;couta.pa.front ;cout-入口endl;void main()Queue Q;InitQueue(Q);ElemType data;for(int i=0;i20;i+)EnQueue(Q,2*i+1);DisplayQueue(Q);coutendl;cout一、出队操作endl;if(OutQueue(Q,data)cout数据data已出队endl;elsecout出队失败endl;DisplayQueue(Q);coutendl;cout二、入队操作endl;coutdata;EnQueue(Q,data);DisplayQueue(Q);coutendl;cout三、队列是否为空?endl;if(EmptyQueue(Q)cout是endl;elsecout否endl;delete Q.p;2.链式队列源程序#includeusing namespace std;typedef int ElemType;struct LNodeElemType data;LNode *next;struct LinkQueueLNode *front;LNode *rear;void InitQueue(LinkQueue &a)a.front=new LNode;a.front-next=a.rear=NULL;bool EmptyQueue(LinkQueue &a)return a.front=a.rear;void EnQueue(LinkQueue &a,ElemType item) LNode *p;p=new LNode;p-data=item;p-next=NULL;if(a.rear!=NULL)a.rear-next=p;a.rear=p;elsea.front-next=a.rear=p;bool OutQueue(LinkQueue &a,ElemType &item) if(a.front=a.rear)cout队列为空next;item=a.front-data;delete p;return true;void DisplayQueue(LinkQueue a)if(a.front=a.rear)cout队列为空endl;cout出口-next;coutdata ;cout-入口endl;void main()LinkQueue Q;ElemType data;InitQueue(Q);for(int i=0;i20;i+)EnQueue(Q,2*i+1);DisplayQueue(Q);cout一、出队操作endl;for(int i=0;i20;i+)if(OutQueue(Q,data)cout数据data已出队endl;elsecout出队失败endl;DisplayQueue(Q);coutendl;cout三、队列是否为空?endl;if(EmptyQueue(Q)cout是e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论