版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构实验报告实验序号:5 实验项目名称:队列的操作学号姓名pmj专业、班实验地点实验楼1指导教师实验时间一、实验目的及要求1. 熟悉队列的基本概念;2. 掌握队列的链式表存储结构;3掌握队列的应用。二、实验设备(环境)及要求微型计算机;windows 操作系统;Microsoft Visual Studio 6.0集成开发环境。三、实验内容与步骤1.C/C+的库函数中已经实现了队列,引用方法为#include <queue>,请上网查阅资料,完成习题。创建一个队列。将a、b、c、d、e、f依次入队。若队列不为空,将元素出队并打印输出。2.以下的循环队列采用空一个空间的方式来识别
2、队列满与空,请修改程序,设置一个标志域tag,并以tag的值为0或1来区分队头指针front和队尾指针rear相同时的队列状态是“空”还是“满”。从而达到100%队列空间可用。#include <stdlib.h>#include <stdio.h>#define ERROR 1#define OK 0#define OVERFLOW 1typedef int QElemType;typedef int Status;#define MAXQSIZE 100 /最大队列长度typedef struct QElemType *base; / 动态分配存储空间int fro
3、nt; / 头指针,若队列不空,指向队列头元素int rear; / 尾指针,若队列不空, /指向队列尾元素 的下一个位置SqQueue;Status InitQueue (SqQueue &Q) / 构造一个空队列QQ.base = (QElemType *) malloc (MAXQSIZE *sizeof (QElemType); if (!Q.base) exit (OVERFLOW); /存储分配失败 Q.front = Q.rear = 0; return OK;Status EnQueue (SqQueue &Q, QElemType e) / 插入元素e为Q的新
4、的队尾元素 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; 否则返回ERROR if (Q.front = Q.rear) return ERROR; e = Q.baseQ.front; Q.front = (Q.front+1) % MAXQSIZE
5、; return OK;void main()int i;QElemType j = 0;SqQueue S;InitQueue(S); /初始化队列printf("元素入队列");for(i=0 ; i<10; i+)printf(" %d ",j);EnQueue(S,j); /元素入队列j+;printf("n元素出队列");for(i=0 ; i<10; i+)DeQueue(S,j); /元素出队列printf(" %d ",j);运行结果截图:第一题:第二题:四、分析与讨论对上机实践结果进行
6、分析,上机的心得体会。五、教师评语签名:日期:成绩附源程序清单:1#include <stdlib.h>#include <stdio.h>#define ERROR 1#define OK 0#define OVERFLOW 1typedef int QElemType;typedef int Status;#define MAXQSIZE 100 /最大队列长度typedef struct QElemType *base; / 动态分配存储空间int front; / 头指针,若队列不空,指向队列头元素int rear; / 尾指针,若队列不空, /指向队列尾元素
7、的下一个位置SqQueue;/ 构造一个空队列QStatus InitQueue (SqQueue &Q) Q.base = (QElemType *) malloc (MAXQSIZE *sizeof (QElemType); if (!Q.base) exit (OVERFLOW); /存储分配失败 Q.front = Q.rear = 0; return OK;/ 插入元素e为Q的新的队尾元素Status EnQueue (SqQueue &Q, QElemType e) if (Q.rear+1) % MAXQSIZE = Q.front) return ERROR;
8、/队列满 Q.baseQ.rear = e; Q.rear = (Q.rear+1) % MAXQSIZE; return OK;/ 若队列不空,则删除Q的队头元素,用e返回其值,并返回OK; 否则返回ERRORStatus DeQueue (SqQueue &Q, QElemType &e) if (Q.front = Q.rear) return ERROR; e = Q.baseQ.front; Q.front = (Q.front+1) % MAXQSIZE; return OK;void main()char i;int n=0;QElemType j = 0;SqQ
9、ueue S;InitQueue(S); /初始化队列printf("元素入队列,回车结束n");while(i=getchar()!='n')EnQueue(S,i); /元素入队列n+;printf("元素出队列n");for(i=0 ; i<n; i+)DeQueue(S,j); /元素出队列printf("%c",j);printf("n");2#include <stdlib.h>#include <stdio.h>#define ERROR 1#define
10、 OK 0#define OVERFLOW 1typedef int QElemType;typedef int Status;int tag1=0;int tag2=1;#define MAXQSIZE 5 /最大队列长度typedef struct QElemType *base; / 动态分配存储空间int front; / 头指针,若队列不空,指向队列头元素int rear; / 尾指针,若队列不空, /指向队列尾元素 的下一个位置SqQueue;/ 构造一个空队列QStatus InitQueue (SqQueue &Q) Q.base = (QElemType *) mal
11、loc (MAXQSIZE *sizeof (QElemType); if (!Q.base) exit (OVERFLOW); /存储分配失败 Q.front = Q.rear = 0; return OK;/ 插入元素e为Q的新的队尾元素Status EnQueue (SqQueue &Q, QElemType e) if (Q.rear+1) % MAXQSIZE = Q.front) if(Q.rear+1) / MAXQSIZE)=tag1)printf("队列为空n");if(Q.rear+1) / MAXQSIZE)=tag2)printf("
12、;队列为满n");/return ERROR; /队列满 Q.baseQ.rear = e; Q.rear = (Q.rear+1) % MAXQSIZE; return OK;/ 若队列不空,则删除Q的队头元素,用e返回其值,并返回OK; 否则返回ERRORStatus DeQueue (SqQueue &Q, QElemType &e) if (Q.front = Q.rear) return ERROR; e = Q.baseQ.front; Q.front = (Q.front+1) % MAXQSIZE; return OK;void main()char
13、i;int n=0;QElemType j = 0;SqQueue S;InitQueue(S); /初始化队列printf("元素入队列,回车结束n");while(i=getchar()!='n')EnQueue(S,i); /元素入队列n+;printf("元素出队列n");for(i=0;i<n;i+)DeQueue(S,j); /元素出队列printf("%c",j);printf("n");2#include <stdlib.h>#include <stdio.h
14、>#define ERROR 1#define OK 0#define OVERFLOW 1typedef int QElemType;typedef int Status;#define MAXQSIZE 5 /最大队列长度static int tag=1;static int k=0;typedef struct QElemType *base; / 动态分配存储空间int front; / 头指针,若队列不空,指向队列头元素int rear; / 尾指针,若队列不空, /指向队列尾元素 的下一个位置SqQueue;/ 构造一个空队列QStatus InitQueue (SqQueu
15、e &Q) Q.base = (QElemType *) malloc (MAXQSIZE *sizeof (QElemType); if (!Q.base) exit (OVERFLOW); /存储分配失败 Q.front = Q.rear = 0; return OK;/ 插入元素e为Q的新的队尾元素Status EnQueue (SqQueue &Q, QElemType e) Q.baseQ.rear = e; Q.rear = (Q.rear+1) % MAXQSIZE; return OK;/ 若队列不空,则删除Q的队头元素,用e返回其值,并返回OK; 否则返回ERRORStatus DeQueue (SqQueue &Q, QElemType &e) e = Q.baseQ.front; Q.front = (Q.front+1) % MAXQSIZE;/if(Q.front) % MAXQSIZE)=Q.front)tag=2;k+;return OK;void main()char i;int n=0;QElemType j = 0;SqQueue S;InitQueue(S); /初始化队列printf("元素入队列,回车结束n");while(i=getchar()!='n')EnQ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年城市拆迁项目融资计划书
- 2024年汽车金融项目策划方案报告
- 江苏省无锡市锡中学实验校2024届中考生物最后冲刺模拟试卷含解析
- 2024年碳酸丙烯酯行业企业战略风险管理报告
- 2024年防晒油行业企业战略风险管理报告
- 2024年压力式验潮仪项目创业投资方案
- 2024年特殊光学零件项目招商引资报告
- 2024年插拉刨床项目调研分析报告
- 2024年体外循环管路项目安全调研评估报告
- 2024年柱塞泵行业企业战略风险管理报告
- 2024年华电新疆发电有限公司招聘笔试参考题库含答案解析
- 风光储储能项目PCS舱、电池舱吊装方案
- 知识创新与学术规范中国大学mooc课后章节答案期末考试题库2023年
- 《新教材 新课标 新措施》“三新”背景下高中生物学学科教学研讨 课件
- 零基础开口说日语智慧树知到答案章节测试2023年嘉兴学院
- 初中英语仁爱版八年级下册 Unit 6 单元作业设计
- 幼儿园绘本故事:《十二生肖》 课件
- NX1P2间EIP通信测试
- 百度搜索引擎优化指南.ppt
- 高中化学用到的四十种实验仪器完整介绍
- 冰箱基本工艺流程ppt课件.ppt
评论
0/150
提交评论