队列实验报告

上传人:m**** 文档编号:507573912 上传时间:2023-04-01 格式:DOC 页数:9 大小:20KB
返回 下载 相关 举报
队列实验报告_第1页
第1页 / 共9页
队列实验报告_第2页
第2页 / 共9页
队列实验报告_第3页
第3页 / 共9页
队列实验报告_第4页
第4页 / 共9页
队列实验报告_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《队列实验报告》由会员分享,可在线阅读,更多相关《队列实验报告(9页珍藏版)》请在金锄头文库上搜索。

1、队列实验报告一实验工程名称循环队列和链式队列的创立 二、实验目的 1、掌握队列的特点(先进先出 FIFO)及根本操作,如入队、出队等, 2、队列顺序存储构造、链式存储构造和循环队列的实现,以便在实际问题背景下灵敏应用。三、实验内容 1链式队列的实现和运算 2循环队列的实现和运算 四、主要仪器设备及耗材 VC+6.0 运行环境实现其操作 五程序算法 (1) 循环队列操作的算法 1 进队列 Voidenqueue (seqqueue&;q, elemtype_) if (q.rear+1)%ma_size = = q.front)cout 出队列 Voiddlqueue(seqqueue&;q )

2、 if (q.rear= =q.front)cout 取对头元素 elemtypegethead(seqqueue q ) if(q.rear= =q.front) cout 判队列空否int empty(seqqueue q ) if(q.rear= =q.front)reurn 1;else return 0; 2.链队列操作的算法 1 .链队列上的初始化voidINIQUEUE( linkqueue&;s)link_p;p=newlink;p-ne_t=NULL;/p 是构造体指针类型,用-s.front=p;/s 是构造体变量,用. s.rear=p;/头尾指针都指向头结点 2.入队列

3、 voidpush(linkqueue &;s, elemtype_) link_p;/p 是构造体指针类型,用-p=newlink;p-data=_;p-ne_t=s.rear-ne_t;/s 是构造体变量,用.s.rear-ne_t=p;s.rear=p;/插入最后 3 判队空 intempty( linkqueues ) if (s.front= =s.rear) return 1;else return 0; 4.取队头元素elemtypegethead( linkqueue s ) if (s.front= =s.rear)returnNULL;elseretuens.front-n

4、e_t-data; 5.出 出 队列voidpop(linkqueue &;s) link_p;p=s.front-ne_t; if (p-ne_t= =NULL)/链队列中只有一个元素,需要修改 rear 指针s.front-ne_t=NULL;s.rear=s.front; elses.front-ne_t =p-ne_t;/rear 不用变 delete (p); 六 六.程序代码 a.循环队列代码 #include #define MA_N20 struct seq char queueMA_N; int front, rear;void iniq(seq&;q) q.front=q.

5、rear=MA_N-1; void enq(seq &;q,char _) if(q.rear+1)%MA_N=q.front)cout“overflow”;else q.rear=(q.rear+1)%MA_N;q.queueq.rear=_; /return(0); void dlq(seq &;q) if (q.rear = q.front) cout“underflow”; else q.front=(q.front+1)%MA_N; int gethead(seq &;q)/取队头元素if (q.rear = q.front)/判断是否队列为空 cout“underflow”; el

6、se return q.queue(q.front+1)%MA_N; main seqq; int i,y; iniq(q); cout“输入元素入队 0 为止”i; while(i) enq( q,i); cini; y=gethead( q); cout“队头为=”yendl; dlq( q); y=gethead( q); cout“执行一次删除队头后,队头为=”yendl; b.链队列的代码 #include typedef struct QNode char data;QNode _ne_t;QNode,_QueuePtr;typedef struct QueuePtr front;

7、 QueuePtr rear; LinkQueue;InitQueue(LinkQueue &;Q) Q.front=Q.rear=new QNode;Q.front-ne_t=NULL;return 0; EnQueue(LinkQueue &;Q,char e) QueuePtr p;p=new QNode;p-data=e;p-ne_t=NULL;Q.rear-ne_t=p;Q.rear=p;return 0; void disp(LinkQueue &;Q) /打印队列QueuePtr p;p=Q.front-ne_t;while(p!=NULL)coutdata”;p=p-ne_t;

8、DeQueue(LinkQueue &;Q,char &;e) QueuePtr p;if(Q.front=Q.rear)return 1;p=Q.front-ne_t; e=p-data;Q.front-ne_t=p-ne_t;if(Q.rear=p)Q.rear=Q.front;delete p;return 0; void mainLinkQueue Q;char e,e1;InitQueue(Q);cout“输入队列元素,0 时完毕:”e;while(e!=0)EnQueue(Q,e);cine;cout“队列为:”endl;disp(Q);DeQueue(Q,e1);coutendl“执行一次删除队头,删除的元素是:”e1endl;cout“队列为:”endl;disp(Q);coutendl; 六.程序输入数据及实验结果 a.循环队列实验结果 c.链队列实验结果七、考虑讨论题或体会或对改良实验的建议 1体会 aC+语言知识不懂,需要好好学习; b对单链表不够熟悉,要多练习创立单链表及其根本操作。八、参考资料 a.数据构造 李根强主编中国国水利水电出版社 b.C+语言程序设计 郑莉董渊 何江舟编清华大学出版社第 页 共 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号