实验三队列实验报告大全
文件格式:DOCX
时间:2023-04-27 00:00:00    小编:讲大实话

实验三队列实验报告大全

小编:讲大实话

报告是指向上级机关汇报本单位、本部门、本地区工作情况、做法、经验以及问题的报告,那么我们该如何写一篇较为完美的报告呢?这里我整理了一些优秀的报告范文,希望对大家有所帮助,下面我们就来了解一下吧。

实验三队列实验报告篇一

实验三 队列实验 实验题目:

建立含有若干个元素的循环队列和链队列,并分别实现循环队列和链队列的入队和出对操作。

(1 1)先实现循环队列的入队和出队操作 1 1。问题分析 本程序要求实现建立含有若干个元素的循环队列,并实现循环队列的入队和出队操作.完成该实验需要以下 4 个子任务:

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

○2 定义一个 display()函数实现队列元素的输出看入队是否成功 错误!通过队列的基本算法实现队列的出队操作 错误!在主函数中完成操作 测试数据设计如下:

1 2 3 4 5 6 2 2。

概要设计 为了实现上述程序功能,需要:

错误!声明一个循环队列 错误!定义出队列的基本算法,错误!通过键盘输入 5 个整数,入队,出队 错误!在主函数中先往队列里输入 5 个元素,然后入队,输出,看入队是否成功,然后出队,再调用 display()函数看是否出队。

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

1 主函数main()2.置空队:initqueue()3.判对空:

queueempty()4.判队满:queuefull()5。入队:add()6。出队:delete()7。display()各函数关系如下:

in itqueu e(()

euq qﻩ ueu u e empty()m a in(()qu e uefull()daﻩ add())m m ai nedﻩ de lete()dis s p lay()3 3、详细设计 实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码.(1)循环队列 #define maxlen 10 typedef struct{ ﻩ ﻩ;]nelxam[ atad tniﻩ ﻩ ﻩ ;tnorf tniﻩ ;raer tniﻩ}seqqueue;(2)队列基本算法 seqqueue *initqueue(seqqueue *q)//建立一个空循环队列 { q=(seqqueue *)malloc(sizeof(seqqueue));;0=tnorf>-qﻩ;0=raer>-qﻩ;q nruterﻩ} int queuefull(seqqueue *q){ //判断队列是否为满 if(q-〉front==(q->rear+1)%maxlen)ﻩ ;1 nruterﻩ else return 0; } int queueempty(seqqueue *q){ ﻩ //判断队列是否为空)tnorf>—q==raer>—q(fiﻩ

return 1;else return 0; } void add(seqqueue *q,int x)//入队 { {))q(llufeueuq!(fiﻩ ﻩ ;nelxam%)1+raer>-q(=raer>-qﻩ q—〉data[q-〉rear]=x; } ;)”lluf eueuq"(ftnirp esleﻩ} void delete(seqqueue *q){ //出队))q(ytpmeeueuq!(fiﻩ ;nelxam%)1+tnorf>—q(=tnorf>—qﻩ else printf("queue empty"); }(3)用display()函数输出循环队列元素 void display(seqqueue *q)// ﻩ 素元的q列队环循出输ﻩ{ ;i tniﻩ)raer>-q=!tnorf>-q(fiﻩ ﻩ ﻩ //循环队列非空,输出队列元素 { ﻩ printf("输出循环队列元素:"); ﻩ;tnorf〉-q=iﻩ odﻩ {;nelxam%)1+i(=iﻩ ﻩ;)]i[atad>—q,"d%"(ftnirpﻩ }while(i!=q->rear); } else printf(”队列为空!");}(4)在主函数中先往队列里输入 5 个元素,输出,看入队是否成功,然后出队,再调用 display()t main(){ ;q* eueuqqesﻩ ;y,i tniﻩ q=initqueue(q);// ﻩ ﻩ 列队环循空立建ﻩ

printf("请输入5个元素”); for(i=0;i<5;i++)// ﻩ ﻩ 素元个5队入ﻩ {;)y&,"d%”(fnacsﻩ ;)y,q(ddaﻩ } display(q); ﻩ ﻩ // ﻩ ﻩ 素元列队环循出输ﻩ)++i;5

6 6、测试结果 7 7、附录 #include

;tnorf tniﻩ int rear; }seqqueue;seqqueue *initqueue(seqqueue *q)//建立一个空循环队列 { q=(seqqueue *)malloc(sizeof(seqqueue)); ;0=tnorf>-qﻩ q->rear=0; return q;} int queuefull(seqqueue *q){ //判断队列是否为满)nelxam%)1+raer>-q(==tnorf>-q(fiﻩ return 1; else return 0;} int queueempty(seqqueue *q){// ﻩ ﻩ 空为否是列队断判ﻩ)tnorf>-q==raer>-q(fiﻩ;1 nruterﻩ else return 0;} void add(seqqueue *q,int x)//入队 { {))q(llufeueuq!(fiﻩ q-〉rear=(q—>rear+1)%maxlen; ﻩ ;x=]raer>-q[atad〉-qﻩ }else printf("queue full");} void delete(seqqueue *q){ //出队))q(ytpmeeueuq!(fiﻩ ﻩ;nelxam%)1+tnorf>-q(=tnorf>-qﻩ else printf(”queue empty");} void display(seqqueue *q)ﻩ //输出循环队列 q 的元素 { int i;ﻩ)raer〉-q=!tnorf〉—q(fiﻩ ﻩ // 素元列队出输,空非列队环循ﻩ { ;)”:素元列队环循出输”(ftnirpﻩ

;tnorf>—q=iﻩ do { ﻩ ﻩ i=(i+1)%maxlen;ﻩ ﻩ printf("%d”,q->data[i]); } ;)raer〉-q=!i(elihwﻩ } esleﻩ ;)"!空为列队"(ftnirpﻩ} int main(){;q* eueuqqesﻩ int i,y;q=initqueue(q);// ﻩ ﻩ ﻩ ﻩ 列队环循空立建ﻩ ;)”素元个 5 入输请”(ftnirpﻩ ﻩ)++i;5

(2 2)实现链队列的入队和出队操作 1 1 .问题分析 本程序要求实现建立含有若干个元素的链队列,并实现链队列入队和出队操作。

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

\o\ac(○ ,1)定义一个链队列的存储结构,定义链 队列的基本算法。

○2 定义一个 display()函数实现队列元素的输出看入队是否成功 错误!通过队列的基本算法实现队列的出队操作 错误!在主函数中完成操作 测试数据设计如下:

1 2 3 4 5 6 2 2。概要设计 为了实现上述程序功能,需要:○,1 声明一个链队列 错误!定义出链队列的基本算法,○,3 通过键盘输入5个整数,入队,出队 ○,4 在主函数中先往队列里输入 5 个元素,然后入队,输出,看入队是否成功,然后出队,再调用display()函数看是否出队。

2)本程序包含6个函数: 1 主函数 main()2.置空队:initqueue()3.判对空: queueempty()4.入队:add()5.出队:delete()6.display()各函数关系如下: uqtesﻩ setqu e ue()

euq qﻩ ueu u e empty()m ain())a dd()eteledﻩ delete()display()4 4、详细设计 实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。

(1 1)链队列 #define maxlen 10 typedef struct node{ int data;struct node *next; }linklist;typedef struct{ linklist *front,*rear; }linkqueue;linkqueue *q;(2)队列基本算法 linkqueue *setqueue()//建立一个空链队列 { ;))eueuqknil(foezis(collam)* eueuqknil(=qﻩ q->front=(linklist *)malloc(sizeof(linklist));q->front->next=null;q—〉rear=q—>front;;q nruterﻩ} int queueempty(linkqueue *q){// ﻩ 空为否是列队断判ﻩ if(q-〉rear==q—>front)return 1; ;0 nruter esleﻩ}

linkqueue *add(linkqueue *q,int x)//入队 { linklist *p;p=(linklist *)malloc(sizeof(linklist)); p—>data=x;p-〉next=null;;p=txen>-raer〉—qﻩ q—>rear=p; return q; } linkqueue *delete(linkqueue *q){ // 队出ﻩ ;p* tsilknilﻩ if(!queueempty(q)){ ﻩ ;txen〉-tnorf>-q=pﻩ q—>front—〉next=p-〉next;ﻩ if(p->next=null)q->rear=q—〉front; ;q nruter;)p(eerfﻩ } ﻩ else printf(”queue empty"); }(3 3)用di spla y())函数输出链队列元素 void display(linkqueue *q)//输出链队列的元素 { ;p* tsilknilﻩ p=q->front-〉next; if(p!=null){ ;)"素元队链出输”(ftnirpﻩ ﻩ)llun=!p(elihwﻩ { ﻩ ﻩ printf(”%2d”,p—〉data); ﻩ ﻩ p=p—>next; } ﻩ };)"空为队链n"(ftnirp esleﻩ} }(4)入 在主函数中先往队列里输入 5 5 个元素,输出,看入队是否成功, , 然后出队,再调用 d d is play()函数看是否出队。

int main(){;0=y,i tniﻩ setqueue();ﻩ ﻩ //建立空链队列

display(q); ﻩ ;)”素元个5入输请n"(ftnirpﻩ for(i=0;i〈5;i++)ﻩ ﻩ //入队5个元素 {;)y&,"d%”(fnacsﻩ;)y,q(ddaﻩ } display(q); ﻩ ﻩ)++i;5〈i;0=i(rofﻩ // ﻩ 队出素元个5把ﻩ { ﻩ;)q(eteledﻩ ﻩ ﻩ ﻩ }ﻩ ﻩ ;)q(yalpsidﻩ // ﻩ 功成队出否是看ﻩ;0 nruterﻩ} 4、调试分析 编译无错误 5 5、用户使用说明 程序名为class12exe,在 debug文件夹里面.运行环境 visual c++ 6.0。

6 6、测试结果 7 7、附录 #include <stdio.h> #include #define maxlen 10 typedef struct node{ int data;;txen* edon tcurtsﻩ}linklist; typedef struct{ linklist *front,*rear; }linkqueue; linkqueue *q; linkqueue *setqueue()//建立一个空链队列 { q=(linkqueue *)malloc(sizeof(linkqueue)); ;))tsilknil(foezis(collam)* tsilknil(=tnorf>-qﻩ q->front-〉next=null;;tnorf〉—q=raer〉-qﻩ return q; } int queueempty(linkqueue *q){ // 空为否是列队断判ﻩ if(q->rear==q->front);1 nruterﻩ;0 nruter esleﻩ} linkqueue *add(linkqueue *q,int x)//入队 { ;p* tsilknilﻩ p=(linklist *)malloc(sizeof(linklist));p->data=x;p—>next=null;;p=txen>—raer>-qﻩ q->rear=p;;q nruterﻩ} linkqueue *delete(linkqueue *q){ ﻩ //出队;p* tsilknilﻩ {))q(ytpmeeueuq!(fiﻩ;txen>—tnorf>-q=pﻩ ;txen〉-p=txen〉—tnorf>-qﻩ if(p—>next=null)q->rear=q—〉front; ;q nruter;)p(eerfﻩ } ;)”ytpme eueuq”(ftnirp esleﻩ} void display(linkqueue *q)ﻩ //输出链队列的元素 {

猜你喜欢 网友关注 本周热点 软件
musicolet
2025-08-21
BBC英语
2025-08-21
百度汉语词典
2025-08-21
复制