ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:71.59KB ,
资源ID:11763169      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11763169.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验三队列实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验三队列实验报告.docx

1、实验三队列实验报告 计算机科学与技术系 实 验 报 告 专业名称 计算机科学与技术 课程名称 数据结构与算法 项目名称 实验三队列实验 班 级 学 号 1 姓 名 同组人员 无 实验日期 实验三 队列实验实验题目:建立含有若干个元素的循环队列和链队列,并分别实现循环队列和链队列的入队和出对操作。(1)先实现循环队列的入队和出队操作 1.问题分析本程序要求实现建立含有若干个元素的循环队列,并实现循环队列的入队和出队操作。完成该实验需要以下4个子任务:定义一个循环队列的存储结构,定义队列的基本算法。定义一个display()函数实现队列元素的输出看入队是否成功通过队列的基本算法实现队列的出队操作在

2、主函数中完成操作测试数据设计如下:1 2 3 4 5 62.概要设计为了实现上述程序功能,需要:声明一个循环队列定义出队列的基本算法,通过键盘输入5个整数,入队,出队 在主函数中先往队列里输入5个元素,然后入队,输出,看入队是否成功,然后出队,再调用display()函数看是否出队。1)本程序包含7个函数:1主函数main()2.置空队:InitQueue()3.判对空: QueueEmpty()4.判队满:QueueFull()5.入队:Add()6.出队:Delete()7.display() 各函数关系如下: InitQueue() QueueEmpty()Main () QueueFu

3、ll() Add()Main Delete()display()3、详细设计实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。(1)循环队列 #define maxlen 10typedef 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 Queu

4、eFull (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-dataq-rear=x; else printf (queue full);void Delete(SeqQ

5、ueue *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-datai); while(i!=q-rear); else printf(队列为空!);(4)在主

6、函数中先往队列里输入5个元素,输出,看入队是否成功,然后出队,再调用display()函数看是否出队。int main() SeqQueue *q; int i,y; q=InitQueue(q); /建立空循环队列 printf(请输入5个元素); for(i=0;i5;i+) /入队5个元素 scanf(%d,&y); Add(q,y); display(q); /输出循环队列元素 for(i=0;i5;i+) /把5个元素出队 Delete(q); printf(n请输入1个元素); scanf(%d,&y); /再入队一个元素 Add(q,y); display(q); /再输出循环队

7、列元素 return 0;4、调试分析 编译无错误5、用户使用说明 程序名为class1.exe,在DEBUG文件夹里面。运行环境Visual c+ 6.0。6、测试结果7、附录#include #include #define maxlen 10typedef struct int data maxlen; int front; int rear;SeqQueue;SeqQueue *InitQueue(SeqQueue *q) /建立一个空循环队列 q=(SeqQueue *)malloc(sizeof (SeqQueue); q-front=0; q-rear=0; return q;i

8、nt 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-dataq-rear=x; else printf (queue full);void Dele

9、te(SeqQueue *q) /出队 if (!QueueEmpty(q) q-front=(q-front+1)%maxlen; else printf (queue Empty);void display(SeqQueue *q) /输出循环队列q的元素 int i; if(q-front!=q-rear) /循环队列非空,输出队列元素 printf(输出循环队列元素:); i=q-front; do i=(i+1)%maxlen; printf(%d,q-datai); while(i!=q-rear); else printf(队列为空!);int main() SeqQueue *

10、q; int i,y; q=InitQueue(q); /建立空循环队列 printf(请输入5个元素); for(i=0;i5;i+) /入队5个元素 scanf(%d,&y); Add(q,y); display(q); /输出循环队列元素 for(i=0;ifront=(LinkList *)malloc(sizeof(LinkList); q-front-next=NULL; q-rear=q-front; return q;int QueueEmpty(LinkQueue *q) /判断队列是否为空 if (q-rear=q-front) return 1; else return

11、0;LinkQueue *Add (LinkQueue *q,int x) /入队 LinkList *p; p=(LinkList *)malloc(sizeof (LinkList); p-data=x;p-next=NULL; q-rear-next=p; q-rear=p; return q;LinkQueue *Delete(LinkQueue *q) /出队 LinkList *p; if (!QueueEmpty(q) p=q-front-next; q-front-next=p-next; if(p-next=NULL)q-rear=q-front; free(p);retur

12、n q; else printf (queue Empty);(3)用display()函数输出链队列元素void display(LinkQueue *q) /输出链队列的元素 LinkList *p; p=q-front-next; if(p!=NULL) printf(输出链队元素); while(p!=NULL) printf(%2d,p-data); p=p-next; else printf(n链队为空);(4)在主函数中先往队列里输入5个元素,输出,看入队是否成功,然后出队,再调用display()函数看是否出队。int main() int i,y=0; SetQueue();

13、 /建立空链队列 display(q) ; printf(n请输入5个元素); for(i=0;i5;i+) /入队5个元素 scanf(%d,&y); Add(q,y); display(q); for(i=0;i5;i+) /把5个元素出队 Delete(q); display(q); /看是否出队成功 return 0;4、调试分析 编译无错误5、用户使用说明 程序名为class12exe,在DEBUG文件夹里面。运行环境Visual c+ 6.0。6、测试结果7、附录#include #include #define maxlen 10typedef struct node int d

14、ata; struct node *next;LinkList;typedef struct LinkList *front,*rear;LinkQueue;LinkQueue *q;LinkQueue *SetQueue() /建立一个空链队列 q=(LinkQueue *)malloc(sizeof (LinkQueue); q-front=(LinkList *)malloc(sizeof(LinkList); q-front-next=NULL; q-rear=q-front; return q;int QueueEmpty(LinkQueue *q) /判断队列是否为空 if (q-

15、rear=q-front) return 1; else return 0;LinkQueue *Add (LinkQueue *q,int x) /入队 LinkList *p; p=(LinkList *)malloc(sizeof (LinkList); p-data=x;p-next=NULL; q-rear-next=p; q-rear=p; return q;LinkQueue *Delete(LinkQueue *q) /出队 LinkList *p; if (!QueueEmpty(q) p=q-front-next; q-front-next=p-next; if(p-nex

16、t=NULL)q-rear=q-front; free(p);return q; else printf (queue Empty);void display(LinkQueue *q) /输出链队列的元素 LinkList *p; p=q-front-next; if(p!=NULL) printf(输出链队元素); while(p!=NULL) printf(%2d,p-data); p=p-next; else printf(n链队为空);int main() int i,y=0; SetQueue(); /建立链队列 display(q) ; printf(n请输入5个元素); for

17、(i=0;i5;i+) /入队5个元素 scanf(%d,&y); Add(q,y); display(q); for(i=0;ifront=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;char GetHead(SeqQueue *q) /取栈顶元素

18、 if(!QueueEmpty(q) return q-data(q-front+1)%maxlen; else printf(queue Empty);void Add (SeqQueue *q,char x) /入队 if(!QueueFull(q) q-rear=(q-rear+1)%maxlen; q-dataq-rear=x; else printf (queue full);void Delete(SeqQueue *q) /出队 if (!QueueEmpty(q) q-front=(q-front+1)%maxlen; else printf (queue Empty);(3)

19、用print()函数验证程序void print(SeqQueue *q) char x,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()函数验证程序int main() SeqQueue *q; q=InitQueue(q); pr

20、int(q); return 0;4、调试分析 编译无错误5、用户使用说明 程序名为class2.exe,在DEBUG文件夹里面。运行环境Visual c+ 6.0。6、测试结果7、附录#include #include #define maxlen 10typedef struct char data maxlen; int front; int rear;SeqQueue;SeqQueue *InitQueue(SeqQueue *q) /建立一个空循环队列 q=(SeqQueue *)malloc(sizeof (SeqQueue); q-front=0; q-rear=0; retur

21、n 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;char GetHead(SeqQueue *q) /取栈顶元素 if(!QueueEmpty(q) return q-data(q-front+1)%maxlen; else printf(queue Empty);void Add (SeqQueue *q,char x) /入队 if(!QueueFull(q) q-rear=(q-rear+1)%maxlen; q-dataq-rear=x; else printf (queue full);void Delete(SeqQueue *q) /出队

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

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