报告是指向上级机关汇报本单位、本部门、本地区工作情况、做法、经验以及问题的报告,那么我们该如何写一篇较为完美的报告呢?这里我整理了一些优秀的报告范文,希望对大家有所帮助,下面我们就来了解一下吧。
实验三队列实验报告篇一
实验三 队列实验 实验题目:
建立含有若干个元素的循环队列和链队列,并分别实现循环队列和链队列的入队和出对操作。
(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 ;p* tsilknilﻩ p=q->front-〉next; if(p!=null){ ﻩ ;)"素元队链出输"(ftnirpﻩ while(p!=null){ ﻩ;)atad>-p,"d2%”(ftnirpﻩ ﻩ ﻩ ;txen〉—p=pﻩ } } ﻩ else printf("n 链队为空"); } int main(){ int i,y=0;setqueue();ﻩ // ﻩ ﻩ ﻩ 列队链立建ﻩ)q(yalpsidﻩ ﻩ ;ﻩ ﻩ ;)”素元个 5 入输请 n\”(ftnirpﻩ for(i=0;i<5;i++)ﻩ // ﻩ 素元个 5 队入ﻩ { ﻩ;)y&,”d%”(fnacsﻩ add(q,y);} display(q); ﻩ ﻩ ﻩ ﻩ //)++i;5〈i;0=i(rofﻩ ﻩ ﻩ 队出素元个 5 把ﻩ { ﻩ delete(q);} ﻩ ﻩ ;)q(yalpsidﻩ ﻩ // 功成队出否是看ﻩ return 0;} 实验题目 2 2 : 写出下列程序段的输出结果,并通过程序运行来验证 1.问题分析 完成该实验需要以下 4 个子任务: 错误!定义一个循环队列的存储结构,定义队列的基本算法.○2 定义一个 print()函数实现程序 错误!通过队列的基本算法实现队列的出队操作 \o\ac(○,4)在主函数中完成操作 测试数据设计如下: 2.概要设计 为了实现上述程序功能,需要: 错误!声明一个循环队列 错误!定义出队列的基本算法, 错误!在主函数调用print()函数看是否出队。 3)本程序包含8个函数: 1主函数 main()2。置空队:initqueue()3。判对空: queueempty()4。判队满:queuefull()5.入队:add()6。出队:delete()lay()8. gethead()各函数关系如下: gethead()iﻩ in n itq ue ue())qu u eu u eemp ty()m m ai n()ﻩ uq qﻩ u eueful l(()add())m ma a in ndel e te()prin n t()) 5 5、详细设计 实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码.(1)循环队列 #define maxlen 10 typedef struct{ ﻩ;]nelxam[ atad rahcﻩ ﻩ ;tnorf tniﻩ ﻩ ﻩ ;raer tniﻩ}seqqueue;(2)队列基本算法 seqqueue *initqueue(seqqueue *q)//建立一个空循环队列 {;))eueuqqes(foezis(collam)* eueuqqes(=qﻩ q—>front=0;;0=raer>—qﻩ ;q nruterﻩ} int queuefull(seqqueue *q){ //判断队列是否为满)nelxam%)1+raer〉-q(==tnorf〉-q(fiﻩ ;1 nruterﻩ;0 nruter esleﻩ} int queueempty(seqqueue *q){// ﻩ ﻩ 空为否是列队断判ﻩ if(q-〉rear==q->front)ﻩ;1 nruterﻩ else return 0; } char gethead(seqqueue *q){ //取栈顶元素 if(!queueempty(q))ﻩ ;]nelxam%)1+tnorf>—q([atad〉—q nruterﻩ else printf("queue empty”); } void add(seqqueue *q,char x)//入队 { if(!queuefull(q)){ ﻩ ;nelxam%)1+raer〉—q(=raer>-qﻩ;x=]raer〉-q[atad>-qﻩ }else printf("queue full");} void delete(seqqueue *q){ //出队))q(ytpmeeueuq!(fiﻩ ﻩ q-〉front=(q-〉front+1)%maxlen;else printf(”queue empty"); }(3)用print()函数验证程序 void print(seqqueue *q)ﻩ ﻩ{ ;t,y,x rahcﻩ ;"c"=y;"e’=xﻩ add(q,’h");;)"r’,q(ddaﻩ ;)y,q(ddaﻩ x=gethead(q); ;)q(eteledﻩ;)x,q(ddaﻩ x=gethead(q);delete(q); add(q,’a’); {)0==)q(ytpmeeueuq(elihwﻩ;)q(daehteg=yﻩ ;)q(eteledﻩ;)y,"c%"(ftnirpﻩ } ﻩ ;)x,"c%”(ftnirpﻩ }(4)在主函数中调用 print()函数验证程序 int main(){ seqqueue *q; ;)q(eueuqtini=qﻩ print(q);;0 nruterﻩ } 4 4、调试分析 编译无错误 5 5、用户使用说明 程序名为 class2.exe,在 debug文件夹里面。运行环境 visual c++ 6。0。 6、测试结果 7 7、附录 #i nc c lu u d e < st t d io。 h> # inclu d e 〈 stdlib。 h> #d e fine maxlen 10 0 typed e f s truct{ cha r d d a ta [maxl e n];iﻩ i nt fr o nt ; tni iﻩ nt r r ear r ; } seqqueue ; seqq u eue *i i n itqueue(seq q qu eue *q)// 建立一个空循环队列 { es(=qﻩ q=(se qq ueu e *)ma a llo c(si ze e of f(s eq q q ueue));〉-qﻩ q-〉f f ron t= 0; q q—>rear=0;r r eturn q q ; } } i i n t q u euefull(seqqueue *q q){/ / /判断队列是否为满 iﻩ i f(q -> > fro o nt t = =(q-〉 rear +1 1)%m ax le e n)nruterﻩ return 1; el se return 0; } } int queu e em pt t y(seq q ueue * q){ / ﻩ // 判断队列是否为空 fiﻩ if(q—>re a r== q—> fron t)return 1 ; esleﻩ else r et ur r n 0 0 ; } } ch h a r ge thead(seqqu eu u e *q){/ / /取栈顶元素(fi iﻩ f(!queueempty(q))ﻩ er rﻩ et t u rn q - >d a ta [(q q-->f ro o n t+1)% % max len ]; le eﻩ l se printf("qu e ue em m pt y"); } } vo i d ad d d(se q qu e ue *q q,c har x)/ / /入队 { if(!queuef u ll(q)){ 〉--q qﻩ 〉 rea r=(q—>r ea r+ 1))% maxl en n ; qﻩ q--〉da ta[q -> rear]=x;}e e l se p ri i ntf f(" qu eue e full");} void de le e t e(seqqu eue *q){// 出队 fi iﻩ f((!queu e em p ty(q))tnorf〉--q qﻩ 〉front =(q-->f r on t+ + 1)%m m ax len;eﻩ e ls e printf(”que u e em pt y ”);;} void pr int(s e qqueue * q)ﻩ { hc cﻩ ha a r x,y y,t;=xﻩ x= 'e';y=" c" " ; add(q q,' h’);;ad d((q,"r");;add(q, y);x=gethe ad(q); del e te(q);;add(q, , x)); eg=xﻩ x=ge th h e ad(q); edﻩ de le t e(q); daﻩ ad d(q,' a");;hw wﻩ h ile(qu eue e e mp ty(q)==0){ yﻩ y =ge t head(q q);;d elete(q q);;rp pﻩ r intf(" %c",y); } ﻩ } p p ri i n tf(”%c”, x); } } int ma i n(){ { es sﻩ e qque u e *q; ni=qﻩ q=in itqu u e ue(q);irpﻩ pri nt t(q);re e tu u r n 0;} 学生实验报告,实验三,循环程序设计实验5,递归及队列《数字测量学》实验三到实验五实验报告参考实验三,系统根轨迹分析实验报告过滤实验(实验报告)

一键复制