已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构实验报告-试验三 循环队列的基本操作及应用一、 问题描述:熟悉并掌握循环队列的相关操作,自己设计程序,实现循环队列的构造、清空、销毁及队列元素的插入和删除等相关操作。二、 数据结构设计: #define MAXQSIZE 10 /最大队列长度 struct SqQueue QElemType *base; /初始化动态分配存储空间 Int front; / 头指针,若队列不空,只想对列头元素 int rear; /尾指针,若队列不空,指向队列尾元素的 /下一个位置 ;三、功能设计: 程序中所涉及到的函数如下: Status InitQueue(SqQueue &Q) /构造一个空队列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)/插入元素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 #include / 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等 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);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 FALSE;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)%MAXQSIZE;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)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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026啤酒行业市场发展分析及发展趋势与管理策略研究报告
- 2026农业林业产业行业市场现状供需分析及投资评估规划分析研究报告
- 2026创新药临床试验成功率统计与风险评估报告
- T/CHTS 10251-2025高速公路车路协同系统云平台功能要求
- 有偿拖鞋加工合同范本
- 劳务合同范本森林抚育
- 锅炉低负荷运行安全与调整技术培训
- 金融书面合同范本
- 木工报价合同范本
- 钢结构防火涂料使用现状及对策培训课件
- 公立医院领导人员管理办法-2017-2026完整对比版
- 2027届上海市浦东新区洋泾中学物理高二上期中考试试题含解析
- 2026重庆渝中区社区工作者及后备人员招聘《综合知识》模拟试卷
- 《10 谁在运动》课件2026-2027学年湘科版四年级上册科学
- 医疗机构麻醉药品和精神药品管理规定2026解读
- 《中华人民共和国生态环境法典》测试题(含参考答案)
- 【新教材】2026年秋人教版(PEP)五年级上册英语全册教案(含教学计划)
- DBJ50-T-061-2021 预拌砂浆生产与应用技术标准
- 2026语文新教材 7.我的战友邱少云 课件
- 电子科技大学学生手册
- 基于QFD创新型品管圈的区域药学服务新模式构建(药剂科)(药房)(门诊)(药房门诊)
评论
0/150
提交评论