数据结构实验5_99XXX_第1页
数据结构实验5_99XXX_第2页
数据结构实验5_99XXX_第3页
数据结构实验5_99XXX_第4页
数据结构实验5_99XXX_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论