实验三队列实验报告.docx
- 文档编号:4162351
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:13
- 大小:69.37KB
实验三队列实验报告.docx
《实验三队列实验报告.docx》由会员分享,可在线阅读,更多相关《实验三队列实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
实验三队列实验报告
计算机科学与技术系
实验报告
专业名称计算机科学与技术
课程名称数据结构与算法
项目名称实验三队列实验
班级
学号1
姓名
同组人员无
实验日期
实验三队列实验
实验题目:
建立含有若干个元素的循环队列和链队列,并分别实现循环队列和链队列的入队和出对操作。
(1)先实现循环队列的入队和出队操作
1.问题分析
本程序要求实现建立含有若干个元素的循环队列,并实现循环队列的入队和出队操作。
完成该实验需要以下4个子任务:
定义一个循环队列的存储结构,定义队列的基本算法。
定义一个display()函数实现队列元素的输出看入队是否成功
通过队列的基本算法实现队列的出队操作
在主函数中完成操作
测试数据设计如下:
12345
6
2.概要设计
为了实现上述程序功能,需要:
声明一个循环队列
定义出队列的基本算法,
通过键盘输入5个整数,入队,出队
在主函数中先往队列里输入5个元素,然后入队,输出,看入队是否成功,然后出队,再调用display()函数看是否出队。
1)本程序包含7个函数:
1主函数main()
2.置空队:
InitQueue()
3.判对空:
QueueEmpty()
4.判队满:
QueueFull()
5.入队:
Add()
6.出队:
Delete()
()
各函数关系如下:
InitQueue()
QueueEmpty()
Main()QueueFull()
Add()Main
Delete()
display()
3、详细设计
实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。
(1)循环队列
#definemaxlen10
typedefstruct{
intdata[maxlen];
intfront;
intrear;
}SeqQueue;
(2)队列基本算法
SeqQueue*InitQueue(SeqQueue*q)
题分析
本程序要求实现建立含有若干个元素的链队列,并实现链队列入队和出队操作。
完成该实验需要以下4个子任务:
定义一个链队列的存储结构,定义链队列的基本算法。
定义一个display()函数实现队列元素的输出看入队是否成功
通过队列的基本算法实现队列的出队操作
在主函数中完成操作
测试数据设计如下:
12345
6
2.概要设计
为了实现上述程序功能,需要:
声明一个链队列
定义出链队列的基本算法,
通过键盘输入5个整数,入队,出队
在主函数中先往队列里输入5个元素,然后入队,输出,看入队是否成功,然后出队,再调用display()函数看是否出队。
2)本程序包含6个函数:
1主函数main()
2.置空队:
InitQueue()
3.判对空:
QueueEmpty()
4.入队:
Add()
5.出队:
Delete()
()
各函数关系如下:
SetQueue()
QueueEmpty()
Main()Add()
Delete()
display()
4、详细设计
实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。
(1)链队列
#definemaxlen10
typedefstructnode{
intdata;
structnode*next;
}LinkList;
typedefstruct{
LinkList*front,*rear;
}LinkQueue;
LinkQueue*q;
(2)队列基本算法
LinkQueue*SetQueue()
题分析
完成该实验需要以下4个子任务:
定义一个循环队列的存储结构,定义队列的基本算法。
定义一个print()函数实现程序
通过队列的基本算法实现队列的出队操作
在主函数中完成操作
测试数据设计如下:
2.概要设计
为了实现上述程序功能,需要:
声明一个循环队列
定义出队列的基本算法,
在主函数调用print()函数看是否出队。
3)本程序包含8个函数:
1主函数main()
2.置空队:
InitQueue()
3.判对空:
QueueEmpty()
4.判队满:
QueueFull()
5.入队:
Add()
6.出队:
Delete()
()
8.GetHead()
各函数关系如下:
GetHead()
InitQueue()
QueueEmpty()
Main()QueueFull()
Add()Main
Delete()
print()
5、详细设计
实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。
(1)循环队列
#definemaxlen10
typedefstruct{
chardata[maxlen];
intfront;
intrear;
}SeqQueue;
(2)队列基本算法
SeqQueue*InitQueue(SeqQueue*q)//建立一个空循环队列
{
q=(SeqQueue*)malloc(sizeof(SeqQueue));
q->front=0;
q->rear=0;
returnq;
}
intQueueFull(SeqQueue*q){//判断队列是否为满
if(q->front==(q->rear+1)%maxlen)
return1;
elsereturn0;
}
intQueueEmpty(SeqQueue*q){//判断队列是否为空
if(q->rear==q->front)
return1;
elsereturn0;
}
charGetHead(SeqQueue*q){//取栈顶元素
if(!
QueueEmpty(q))
returnq->data[(q->front+1)%maxlen];
elseprintf("queueEmpty");
}
voidAdd(SeqQueue*q,charx)//入队
{
if(!
QueueFull(q)){
q->rear=(q->rear+1)%maxlen;
q->data[q->rear]=x;
}elseprintf("queuefull");
}
voidDelete(SeqQueue*q){//出队
if(!
QueueEmpty(q))
q->front=(q->front+1)%maxlen;
elseprintf("queueEmpty");
}
(3)用print()函数验证程序
voidprint(SeqQueue*q)
{
charx,y,t;
x='e';y='c';
Add(q,'h');
Add(q,'r');
Add(q,y);
x=GetHead(q);
Delete(q);
Add(q,x);
x=GetHead(q);
Delete(q);
Add(q,'a');
while(QueueEmpty(q)==0){
y=GetHead(q);
Delete(q);
printf("%c",y);
}
printf("%c",x);
}
(4)在主函数中调用print()函数验证程序
intmain()
{
SeqQueue*q;
q=InitQueue(q);
print(q);
return0;
}
4、调试分析
编译无错误
5、用户使用说明
程序名为,在DEBUG文件夹里面。
运行环境Visualc++。
6、测试结果
7、附录
#include<>
#include<>
#definemaxlen10
typedefstruct{
chardata[maxlen];
intfront;
intrear;
}SeqQueue;
SeqQueue*InitQueue(SeqQueue*q)//建立一个空循环队列
{
q=(SeqQueue*)malloc(sizeof(SeqQueue));
q->front=0;
q->rear=0;
returnq;
}
intQueueFull(SeqQueue*q){//判断队列是否为满
if(q->front==(q->rear+1)%maxlen)
return1;
elsereturn0;
}
intQueueEmpty(SeqQueue*q){//判断队列是否为空
if(q->rear==q->front)
return1;
elsereturn0;
}
charGetHead(SeqQueue*q){//取栈顶元素
if(!
QueueEmpty(q))
returnq->data[(q->front+1)%maxlen];
elseprintf("queueEmpty");
}
voidAdd(SeqQueue*q,charx)//入队
{
if(!
QueueFull(q)){
q->rear=(q->rear+1)%maxlen;
q->data[q->rear]=x;
}elseprintf("queuefull");
}
voidDelete(SeqQueue*q){//出队
if(!
QueueEmpty(q))
q->front=(q->front+1)%maxlen;
elseprintf("queueEmpty");
}
voidprint(SeqQueue*q)
{
charx,y,t;
x='e';y='c';
Add(q,'h');
Add(q,'r');
Add(q,y);
x=GetHead(q);
Delete(q);
Add(q,x);
x=GetHead(q);
Delete(q);
Add(q,'a');
while(QueueEmpty(q)==0){
y=GetHead(q);
Delete(q);
printf("%c",y);
}
printf("%c",x);
}
intmain()
{
SeqQueue*q;
q=InitQueue(q);
print(q);
return0;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 队列 报告