




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.数据结构实验报告-试验三 循环队列的基本操作及应用一、 问题描述:熟悉并掌握循环队列的相关操作,自己设计程序,实现循环队列的构造、清空、销毁及队列元素的插入和删除等相关操作。二、 数据结构设计: #define MAXQSIZE 10 /最大队列长度 struct SqQueue QElemType *base; /初始化动态分配存储空间 Int front; / 头指针,若队列不空,只想对列头元素 int rear; /尾指针,若队列不空,指向队列尾元素的 /下一个位置 ;三、功能设计: 程序中所涉及到的函数如下: Status InitQueue(SqQueue &Q) /构造一个空队列
2、Q Status DestroyQueue(SqQueue &Q) /销毁队列Q,Q不再存在 Status ClearQueue(SqQueue &Q) /将Q清为空队列 Status QueueEmpty(SqQueue Q) /若队列Q为空队列,则 /返回TRUE,否则返回FALSE int QueueLength(SqQueue Q) /返回Q的元素个数,即队列长度Status GetHead(SqQueue Q,QElemType &e)/若队列不空,则用e返回Q的对 /头元素,并返回OK,否则返回ERROR Status EnQueue(SqQueue &Q,QElemType e)
3、/插入元素e为Q的新的队尾元素Status DeQueue(SqQueue &Q,QElemType &e)/若队列不空,则删除Q的队头 /元素,用e返回其值,并返回 /OK,否则返回ERRORStatus QueueTraverse(SqQueue Q,void(*vi)(QElemType)/从队头到队尾依次 /对队列Q中每个元素调用函数 /vi()。一旦vi失败,则操作失败四、源程序:/ c1.h (程序名) #include #include #include / malloc()等 #include / INT_MAX等 #include / EOF(=Z或F6),NULL #inc
4、lude / atoi() #include / eof() #include / floor(),ceil(),abs() #include / exit() #include / cout,cin / 函数结果状态代码 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 / #define OVERFLOW -2 因为在math.h中已定义OVERFLOW的值为3,故去掉此 /行 typedef int Status; / Status是函数的类型,其值是函数结果状态代码,如OK
5、等 typedef int Boolean; / Boolean是布尔类型,其值是TRUE或FALSE/ c3-3.h#define MAXQSIZE 10struct SqQueueQElemType *base;int front;int rear;#includec1.htypedef int QElemType;#includec3-3.hStatus InitQueue(SqQueue &Q) /构造一个空队列QQ.base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType);if(!Q.base)/储存分配失败exit(OVERFLOW);
6、Q.front=Q.rear=0;return OK;Status DestroyQueue(SqQueue &Q)/销毁队列Q,Q不再存在if(Q.base)free(Q.base);Q.base=NULL;Q.front=Q.rear=0;return OK;Status ClearQueue(SqQueue &Q)/将Q清为空队列Q.front=Q.rear=0;return OK;Status QueueEmpty(SqQueue Q)/若队列Q为空队列,则返回TREU,否则返回FALSEif(Q.front=Q.rear)/队列空的标志return TRUE;elsereturn F
7、ALSE;int QueueLength(SqQueue Q)/Qreturn(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;Status GetHead(SqQueue Q,QElemType &e)/if(Q.front=Q.rear)/队列空return ERROR;e=*(Q.base+Q.front);return OK;Status EnQueue(SqQueue &Q,QElemType e)if(Q.rear+1)%MAXQSIZE=Q.front)/队列满return ERROR;Q.baseQ.rear=e;Q.rear=(Q.rear+1)%MAXQ
8、SIZE;returnOK;Status DeQueue(SqQueue &Q,QElemType &e)if(Q.front=Q.rear)/队列空return ERROR;e=Q.baseQ.front;Q.front=(Q.front+1)%MAXQSIZE;return OK;Status QueueTraverse(SqQueue Q,void(*vi)(QElemType)int i;i=Q.front;while(i!=Q.rear)vi(*(Q.base+i);i=(i+1)%MAXQSIZE;printf(n);return OK;void visit(QElemType i
9、)coutti;void main()int i=0,a; QElemType d;SqQueue Q;InitQueue(Q);cout初始化队列后,队列空否?(1:空 0:否)QueueEmpty(Q)n;coutd;if(d=-1)break;i+;EnQueue(Q,d);while(iMAXQSIZE-1);cout队列长度为:QueueLength(Q)n;cout现在队列空否?(1:空 0:否)QueueEmpty(Q)n;for(i=1;i=QueueLength(Q);i+)DeQueue(d);cout删除的元素为:da;EnQueue(Q,a);cout现在队列中的元素为:n;QueueTraverse(Q,visit); coutn; GetHead(Q,a);cout现在对头元素为:an; ClearQueue(); cout清空队列后,对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 应急安全培训公司课件
- 应急与安全管理培训内容课件
- 2025年自考专业(会计)模拟试题附答案详解【轻巧夺冠】
- 买菜合同(标准版)
- 2023年度冶金工业技能鉴定每日一练试卷(培优)附答案详解
- 2024年2月湖南省直机关遴选公务员面试真题带答案详解
- 2025年绿色建筑材料市场推广策略与政策支持下的绿色建筑市场需求预测报告
- 2025年工业互联网平台量子通信技术与数字版权保护的应用预研报告
- 2025年工业互联网平台AR交互技术在人工智能与物联网融合中的应用报告
- 2025年绿色建筑认证体系在绿色建筑绿色建筑社区经济中的应用与发展报告
- 智慧健康养老服务与管理人才培养方案
- GB/T 8923.1-2011涂覆涂料前钢材表面处理表面清洁度的目视评定第1部分:未涂覆过的钢材表面和全面清除原有涂层后的钢材表面的锈蚀等级和处理等级
- TSZUAVIA 009.9-2019 多旋翼无人机系统实验室环境试验方法 第9部分:冲击试验
- ECPR临床应用与进展课件
- 《装配式综合管廊施工及验收标准》
- 罗湖区-空气质量状况及原因分析
- 玉米病害图谱 症状课件
- 2013版电力建设工程概预算定额宣贯讲义
- 伤逝-课件完整版
- 养老机构入住老人服药记录表模板
- SP30超级数字程控交换机技术手册
评论
0/150
提交评论