已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验四 队列存储与操作一、实验目的1、掌握队列的特点(先进先出FIFO)及基本操作,如入队、出队等,队列顺序存储结构、链式存储结构和循环队列的实现,以便在实际问题背景下灵活运用。二、实验内容1顺序队列的实现和运算2链式队列的实现和运算3循环队列的实现和运三、 详细设计:1、顺序队列的实现:#includeusing namespace std;const int Size=100;typedef char DataType;class CirQueue public:CirQueue()front=rear=0;/构造队列,初,front和rear指向CirQueue()void EnQueue(DataType x)if(rear+1)%Size=front)cout队列已经满了endl;return;rear=(rear+1)%Size;/队尾指针在循环的意义下加datarear=x;coutx已入队endl;return;DataType GetQueue()/取队头if(isEmpty()cout队列为空endl;return 0;int i;i=(front+1)%Size;return datai;DataType DeQueue()if(isEmpty()cout队列为空endl;return 0;front=(front+1)%Size;/队头指针在循环的意义下加return datafront;int isEmpty()/是否为空if(front=rear)return 1;elsereturn 0;private:DataType dataSize;int front,rear;int main()CirQueue a;int index;DataType temp;docout*endl;cout1、入队操作endl;cout2、取队头操作endl;cout3、出队操作endl;cout4、判断队列是否为空endl;cout5、退出endl;cout*index;if(index=5)return 0;switch(index)case 1:cout请输入要入队的元素temp;a.EnQueue(temp);break;case 2:temp=a.GetQueue();if(temp!=0)cout队头的元素为temp endl;break;case 3:temp=a.DeQueue();if(temp!=0)cout出队的元素为temp endl;break;case 4:bool temp;temp=a.isEmpty();if(temp)cout空队endl;elsecout非空队endl;break;while(index);return 0;2、循环队列的实现:#include #include #define OK 1#define ERROR 0typedef int Status; / Status是函数的类型,其值是函数结果状态代码,如OK等typedef int QElemType;#define MAXQSIZE 100 / 最大队列长度(对于循环队列,最大队列长度要减1)typedef struct QElemType *base; / 初始化的动态分配存储空间 int front; / 头指针,若队列不空,指向队列头元素 int rear; / 尾指针,若队列不空,指向队列尾元素的下一个位置 SqQueue;Status InitQueue(SqQueue &Q) / 构造一个空队列Q,该队列预定义大小为MAXQSIZEQ.base = (QElemType *)malloc (MAXQSIZE * sizeof(QElemType);if(!Q.base) return ERROR;Q.front = Q.rear = 0;return OK;Status EnQueue(SqQueue &Q,QElemType e) / 插入元素e为Q的新的队尾元素if(Q.rear + 1)% MAXQSIZE = Q.front)return ERROR;Q.baseQ.rear = e ;Q.rear = (Q.rear + 1) % MAXQSIZE;return OK;Status DeQueue(SqQueue &Q, QElemType &e) / 若队列不空, 则删除Q的队头元素, 用e返回其值, 并返回OK; 否则返回ERRORif(Q.front = Q.rear) return ERROR;e = Q.baseQ.front;Q.front = (Q.front +1) % MAXQSIZE;return OK;Status GetHead(SqQueue Q, QElemType &e)/ 若队列不空,则用e返回队头元素,并返回OK,否则返回ERRORif(Q.front = Q.rear) return ERROR;e = Q.baseQ.front;return OK;int QueueLength(SqQueue Q) / 返回Q的元素个数return (Q.rear + MAXQSIZE - Q.front) % MAXQSIZE;Status QueueTraverse(SqQueue Q) / 若队列不空,则从队头到队尾依次输出各个队列元素,并返回OK;否则返回ERROR.int i;i=Q.front;if(Q.front = Q.rear)printf(空队!); elseprintf(队列为 is: );while(i Q.rear) printf(%d ,Q.basei); i = i+1; printf(n);return OK;int main()int a; SqQueue S;QElemType x, e; if(InitQueue(S) / 判断顺序表是否创建成功printf(创建一个队列.n);while(1)printf(1:入队n2:出队 n3:取队头 n4:队长n5:显示n0:退出n选择:n);scanf(%d,&a);switch(a)case 1: scanf(%d, &x); if(!EnQueue(S,x) printf(Enter Error!n); / 判断入队是否合法 else printf( %d 入队!n, x); break;case 2: if(!DeQueue(S,e) printf(Delete Error!n); / 判断出队是否合法 else printf( %d 出队!n, e); break;case 3: if(!GetHead(S,e)printf(Get Head Error!n); / 判断Get Head是否合法 else printf(取队头 %d!n, e); brea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公务员考试水浒传题库试题及答案
- 公务员考试实词辨析试题及答案
- 甘李药业秋招面试题及答案
- 2026年泰山职业技术学院单招职业技能考试题库完美版
- 2026年黑龙江艺术职业学院单招综合素质考试必刷测试卷附答案
- 2026年福州英华职业学院单招职业倾向性测试题库新版
- 2025广西南宁市江南区农业农村局公开招聘4人参考题库附答案详解(满分必刷)
- 2026年天津理工大学中环信息学院单招职业倾向性考试题库汇编
- 2025广西北海市秋季“智汇珠城”招聘事业单位急需紧缺专业人才90人参考题库含答案详解(b卷)
- 2026年四川航天职业技术学院单招职业倾向性考试必刷测试卷汇编
- 职务犯罪宣传课件
- GB/T 43683.4-2025水轮发电机组安装程序与公差导则第4部分:立式轴流转桨式或轴流定桨式水轮机
- DB43-T 1976-2021 压力容器波纹金属软管定期检查技术规范
- 南开大学简介
- JTG3410-2025公路沥青及混合料试验规程解读宣贯
- 化工厂安全培训活动课件
- 监狱干警给犯人授课课件
- 2025至2030电石行业市场深度调研及前景趋势与投资研究报告
- 家电清洗培训课件下载
- GB/T 7031-2025机械振动道路路面谱测量数据的报告
- 2025-2030油田化学品非常规油气开采技术适配性与服务型制造转型研究
评论
0/150
提交评论