实验三队列实验报告.docx

上传人:b****4 文档编号:4162351 上传时间:2022-11-28 格式:DOCX 页数:13 大小:69.37KB
下载 相关 举报
实验三队列实验报告.docx_第1页
第1页 / 共13页
实验三队列实验报告.docx_第2页
第2页 / 共13页
实验三队列实验报告.docx_第3页
第3页 / 共13页
实验三队列实验报告.docx_第4页
第4页 / 共13页
实验三队列实验报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

实验三队列实验报告.docx

《实验三队列实验报告.docx》由会员分享,可在线阅读,更多相关《实验三队列实验报告.docx(13页珍藏版)》请在冰豆网上搜索。

实验三队列实验报告.docx

实验三队列实验报告

计算机科学与技术系

实验报告

 

专业名称计算机科学与技术

课程名称数据结构与算法

项目名称实验三队列实验

班级

学号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模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1