队列存储与操作实验报告_第1页
队列存储与操作实验报告_第2页
队列存储与操作实验报告_第3页
队列存储与操作实验报告_第4页
队列存储与操作实验报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、实验四队列存储与操作一. 实验目的1、掌握队列顺序存储结构(循环队列)及实现及操作2、掌握队列的链接存储结构及实现及操作二. 实验内容1、建立一个空顺序存储结构队列;对已建立的队列进行插入、删除、取队头元 素等基本操作。2、建立一个空链式存储结构队列;对已建立的队列进行插入、删除、取队头元 素等基本操作。三. 详细设计:1、顺序队列的实现:#include<iostream>using ntimesptice std;const int size=100;typedef char datatype;class cirqueuepublic:ci rqueue ()front二rea

2、r二0:/构造队列,初始化一个空的循环队列,fronl和rear指向)cirqueue() )voi d enqueue(datatype x)if (rear+l)%sizefront)cout«z,队列己经满了cndl;return; r ear= (r ear+1) %s i ze; /队尾指针在循环的意义下加 datarear=x;cout«x«,/已入队/z«endl;return;)datatype getqueue()/取队头if (isempty ()cout«z,队列为空,«endl;return 0;)int i;

3、i=(front+l)%sizo;return datalii:)datatype dequeue()if (isempty ()cout<<"队列为空"<<endl;return 0;)front=(front+l)%sizo;/队头指针在循环的意义下加 return datalfront:)int isempty()/是否为空if(front=rear)return 1;return 0;)private:datatype datasize; int front, roar;; int main()cirqueue a;int index;dat

4、atype temp;docout«z,k 入队操作z,«endl: cout<<"2、取队头操作"<<endl;cout«"3、出队操作"<<endl;cout«"4、判断队列是否为空"<<endl;cout<x5、退出"«endl;cout<<,/*,z<<endl;cin»in dex;if(index=5) return 0; switch(index)case 1:cout

5、71;"请输入要入队的元索"«endl; cin»temp;日 enqueue (temp);break;case 2:tcmp=a gotqueueo ;if (temp!=0)cout<<"队头的元素为"<<temp<<" "<<endl;)break;case 3:tempci dequeue ();if (temp!二0)cout«,/出队的元索为,«endl; ) break;case 4:bool temp;temp=a i sempt

6、y ();if(temp)cout<<"空队"<<endl;)elsecout«,z非空队z/«endl;break;while(index);return 0;2、链队列的实现:#includeiostream>us ing namespace std;const int sizc=100;typedef char datatype;struct nodedatatype data;node *next;class linkqueuepublic:linkqueue()auto head=new node;head->

7、;next=m'll;front=rear=head;linkqueue () void enqueue (datatype x)auto s=new node;s->clata=x;?为航的?结d点?ss->next=nl'll;/ 巾®?请? 一?个?数籬据 y域rear->next=s;rear=s;datatype gctqucuc ()/取?队d头 ?if (isempty ()cout<<zz队6列 为已空?"endl ;return 0;return front->ncxt->data;datatype

8、 dequeue ()i f (isempty ()cout<<"队6列为a空?,<<cndl;return 0;auto p=new node;/用?于 ?暂丫存?队6头 ?元&索? datatype x;用?于?暂丫存?队6头?数範据y p=front->next;x=p->clata;front->next=p->next;if (p->nextnull)rear=front;delete p;return x;int isemptyo/是?否?为a空?if (fronl=二tear)return 1;elscret

9、urn 0;private:nodc*front, *rcar; /队6头?和(队(尾2指?针?;int main()linkqucuc a;int index;datatype temp;docout<<,zl> c 入?队。操ci作痢?<<endl;cout«z/2. c 取?队6头 ?操£1 作痢?«endl;cout<<,3> c 出?队6操作痢?<<cndl;cout«,4. c判d断?队6列 是?否?为a空?"«endl;cout«"5、c 退

10、?出?endl;cou*«endl;cin>>indcx;if (inclcx=5) (return 0;)switch(index)case 1:cout« 请?输?入?耍瘾入?队6的?元a素?"endl; cin>>tcmp;a. enqueue(temp);break;case 2:temp=a getqueueo ;if(temp!=0)cout«,z 队(5 头?的?元a素?为 a,«temp«,/ ,«endl; break;case 3:t emp=a dequeue();if (tem

11、p!=0)cout<<,/flj?队6的?元a素?为a,<<temp<</, ,<<endl;break;case 4:bool temp;temp=a isempty();if (temp)cout«z,空?队 6/,«endl;else cout«"非?空?队6z,«endl;break;whilc(index);return 0;四、调试分析:-|n| xi1、顺序队列:頁 c:iiid0issyste.32cbd.exe1、2、3、4、5、队队队断岀mi列是否为空主界面列是否为空ikexe1.2、3、4、5、入队操作列是否为空1、2、3、4.敷头的元素为a零作關是否为空请输入要入队的元素:己入队口1 xl3、出队操作4. 判断栈列 卜退出頁 c:iiid0issyste.32cbd.exemi队队队断岀d队队更出lv2、3、4.取队头操作队头的元素为a列是否为空1.2.3、4、5、x-x-xfw xxx m m x )00(xxx m m m其右队

温馨提示

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

最新文档

评论

0/150

提交评论