实验三队列实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机科学与技术系

实验报告

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

课程名称数据结构与算法

项目名称实验三队列实验

班级

学号 1

姓名

同组人员无

实验日期

实验三队列实验

实验题目:建立含有若干个元素的循环队列和链队列,并分别实现循环队列和

链队列的入队和出对操作。

(1)先实现循环队列的入队和出队操作

1.问题分析

本程序要求实现建立含有若干个元素的循环队列,并实现循环队列的入队和出队操作。

完成该实验需要以下4个子任务:

○1定义一个循环队列的存储结构,定义队列的基本算法。

○2定义一个display()函数实现队列元素的输出看入队是否成功

○3通过队列的基本算法实现队列的出队操作

○4在主函数中完成操作

测试数据设计如下:

1 2 3 4 5

6

2.概要设计

为了实现上述程序功能,需要:○1声明一个循环队列○2定义出队列的基本算法,○3通过键盘输入5个整数,入队,出队○4在主函数中先往队列里输入5

个元素,然后入队,输出,看入队是否成功,然后出队,再调用display()函数看是否出队。

1)本程序包含7个函数:

1主函数main()

2.置空队:InitQueue()

3.判对空: QueueEmpty()

4.判队满:QueueFull()

5.入队:Add()

6.出队:Delete()

7.display()

各函数关系如下:

InitQueue()

QueueEmpty()

Main () QueueFull()

Add()Main

Delete()

display()

3、详细设计

实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。

(1)循环队列

#define maxlen 10

typedef struct{

int data [maxlen];

int front;

int rear;

}SeqQueue;

(2)队列基本算法

SeqQueue *InitQueue(SeqQueue *q) //建立一个空循环队列{

q=(SeqQueue *)malloc(sizeof (SeqQueue));

q->front=0;

q->rear=0;

return q;

}

int QueueFull (SeqQueue *q){ //判断队列是否为满

if (q->front==(q->rear+1)%maxlen)

return 1;

else return 0;

}

int QueueEmpty(SeqQueue *q){ //判断队列是否为空

if (q->rear==q->front)

return 1;

else return 0;

}

void Add (SeqQueue *q,int x) //入队

{

if(!QueueFull(q)){

q->rear=(q->rear+1)%maxlen;

q->data[q->rear]=x;

}else printf ("queue full");

}

void Delete(SeqQueue *q){ //出队

if (!QueueEmpty(q))

q->front=(q->front+1)%maxlen;

else printf ("queue Empty");

}

(3)用display()函数输出循环队列元素

void display(SeqQueue *q) //输出循环队列q的元素

{

int i;

if(q->front!=q->rear) //循环队列非空,输出队列元素

{

printf("输出循环队列元素:");

i=q->front;

do

{

i=(i+1)%maxlen;

printf("%d",q->data[i]);

}while(i!=q->rear);

}

else

printf("队列为空!");

}

(4)在主函数中先往队列里输入5个元素,输出,看入队是否成功,然后出队,再调用display()函数看是否出队。

int main()

{

SeqQueue *q;

int i,y;

q=InitQueue(q); //建立空循环队列

printf("请输入5个元素");

for(i=0;i<5;i++) //入队5个元素

{

scanf("%d",&y);

Add(q,y);

}

display(q); //输出循环队列元素

for(i=0;i<5;i++) //把5个元素出队

{

Delete(q);

}

printf("\n请输入1个元素");

scanf("%d",&y); //再入队一个元素

Add(q,y);

display(q); //再输出循环队列元素

return 0;

}

4、调试分析

编译无错误

5、用户使用说明

程序名为class1.exe,在DEBUG文件夹里面。运行环境Visual c++ 6.0。

6、测试结果

7、附录

#include

#include

#define maxlen 10

typedef struct{

int data [maxlen];

int front;

相关文档
最新文档