数据结构--04队列的基本操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》实验报告
院系光电与信息工程学院专业电子信息工程
姓名学号电话
2011级 2班 2013年4月20日
1.实验题目
实验4 .对列的基本操作
2.需求分析
(1)编写链接队列的基本操作函数,调用上述函数实现下列操作,操作步骤如下:调用进队函数建立一个队列。读取队列中的第一个元素。从队列中删除元素。输出队列中的所有元素。
(2)编写环型队列的基本操作函数。调用上述函数实现下列操作,操作步骤如下:
调用进队函数建立一个队列。
读取队列中的第一个元素。
从队列中删除元素。
输出队列中的所有元素。
链接队列:
①进队操作 EnQueue(LinkQueue *Q, QElemType e)
②出队操作,队空 DeQueue(LinkQueue *Q, QElemType *e)
③输出队列中元素 0utputQueue(LinkQueue Q)
环型队列:
①进队操作,返回1为队满 EnQueue(SqQueue *Q, QElemType e)
②出队操作,返回1为队空 DeQueue(SqQueue *Q, QElemType *e)
③输出队列中元素 outPutQMeue(SqQueue Q)
输入形式:整型数。
3.概要设计
(1)链接队列
ADT QNode{
数据对象:D={a i|a i∈IntegerSet,i=0,1,2,…,n,n≥0}
结构关系:R={|a i,a i+1 ∈D}
基本操作:
InitQueue(LinkQueue *Q)
操作前提:Q是一个未初始化的链接队列
操作结果:将Q初始化为一个空的链接队列
EnQueue(LinkQueue *Q, QElemType e)
操作前提:链接队列Q已存在
操作结果:将元素e插入到链接队列中
DeQueue(LinkQueue *Q, QElemType *e)
操作前提:链接队列Q已存在
操作结果:将链接队列Q中队头元素删除,删除的元素值通过e返回
0utputQueue(LinkQueue Q)
操作前提:链接队列Q已存在
操作结果:将链接队列Q中的元素显示到屏幕上
}
本程序包含5个函数:
主函数main()
初始化链接队列函数 InitQueue()
进队函数EnQueue()
出队函数DeQueue()
输出队列中元素函数 OutputStack()
各函数调用关系:主函数main调用其他四个函数
主函数的伪码
main()
{
定义变量i,n,m;
定义一个LinkQueue 变量Lq
初始化 Lq;
输入队列元素的个数;
For循环(i=1;i<=n;i++)
{调用EnQueue函数;}
输出队列中元素;
调用DeQueue函数;
显示删除的队头元素;
显示Lq;
}
(2)环形队列
ADT SqQueue{
数据对象:D={a i|a i∈IntegerSet,i=0,1,2,…,n,n≥0}
结构关系:R={|a i,a i+1 ∈D}
基本操作:
InitQueue(SqQueue &Q)
操作前提:Q是一个未初始化的环型队列
操作结果:将Q初始化为一个空的环型队列
EnQueue(SqQueue *Q,int e)
操作前提:环型队列Q已存在
操作结果:将元素e插入到队列中
DeQueue(SqQueue *Q,int *e)
操作前提:环型队列Q已存在
操作结果:将环型队列Q中队头元素删除,删除的元素值通过e返回 outPutQMeue(SqQueue *Q)
操作前提:环型队列Q已存在
操作结果:将环型队列Q中的元素显示到屏幕上
}
本程序包含5个函数:
主函数main()
初始化链接队列函数 InitQueue()
进队函数EnQueue()
出队函数DeQueue()
输出队列中元素函数 OutputStack()各函数调用关系:主函数main调用其他四个函数
函数的伪码
main()
{定义SqQueue 变量sq;
定义整型变量n,i,m;
构造空的环型队列;
输入队列的长度;
For循环(i=1;i<=n;i++)
{调用EnQueue函数;}
输出队列元素;
删除对头元素;
输出队列元素;
}
4.详细设计
(1)链接队列
(1)类型定义
typedef struct QNode{
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct {
QueuePtr front;
QueuePtr rear;
}LinkQueue;
基本操作的伪码算法
(1)初始化
void InitQueue(LinkQueue *Q){
Q->front=Q->rear==申请新结点;
Q->front->next=NULL;}
(2)进队