版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 () queuefull() add
3、()main delete()display()3、 详细设计实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。(1)循环队列 #define maxlen 10typedef structint 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 (seqqueu
4、e *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(seqqueue *q) /出队if (!queueemp
5、ty(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;doi=(i+1)%maxlen;printf(%d,q-datai);while(i!=q-rear);elseprintf(队列为空!);(4)在主函数中先往队列里输入5个元素,输出,看入队是否成功,然后出队,再调用displ
6、ay()函数看是否出队。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);/再输出循环队列元素return 0;4、调试分析 编译无错误5、用户使用说明 程序名为class1.exe,在debug文件夹里面
7、。运行环境visual c+ 6.0。6、测试结果7、附录#include #include #define maxlen 10typedef structint data maxlen;int front;int rear;seqqueue;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)r
8、eturn 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(seqqueue *q) /出队if (!queueempty(q)q-front=(q-front+1)%maxlen;else printf (q
9、ueue empty);void display(seqqueue *q)/输出循环队列q的元素int i;if(q-front!=q-rear)/循环队列非空,输出队列元素printf(输出循环队列元素:); i=q-front;doi=(i+1)%maxlen;printf(%d,q-datai);while(i!=q-rear);elseprintf(队列为空!);int main()seqqueue *q;int i,y;q=initqueue(q);/建立空循环队列printf(请输入5个元素);for(i=0;i5;i+)/入队5个元素scanf(%d,&y);add(q,y);d
10、isplay(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 0;linkqueue *add (linkqueue *q,int x) /入队linklist *p;p=(linklist *)malloc(sizeof (linklist);p-data=x;p-next=nul
11、l;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);return q;else printf (queue empty);(3)用display()函数输出链队列元素void display(linkqueue *q)/输出链队列的元素linklist *p;p=q-front-next;if(p!=nul
12、l)printf(输出链队元素);while(p!=null)printf(%2d,p-data);p=p-next;else printf(n链队为空);(4)在主函数中先往队列里输入5个元素,输出,看入队是否成功,然后出队,再调用display()函数看是否出队。int main()int i,y=0;setqueue();/建立空链队列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);/看
13、是否出队成功return 0;4、调试分析 编译无错误5、用户使用说明 程序名为class12exe,在debug文件夹里面。运行环境visual c+ 6.0。6、测试结果7、附录#include #include #define maxlen 10typedef struct nodeint data;struct node *next;linklist;typedef structlinklist *front,*rear;linkqueue;linkqueue *q;linkqueue *setqueue() /建立一个空链队列 q=(linkqueue *)malloc(sizeof
14、 (linkqueue);q-front=(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 0;linkqueue *add (linkqueue *q,int x) /入队linklist *p;p=(linklist *)malloc(sizeof (linklist);p-data=x;p-next=null;q-rear-next
15、=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);return q;else printf (queue empty);void display(linkqueue *q)/输出链队列的元素linklist *p;p=q-front-next;if(p!=null)printf(输出链队元素);while(p!=null)prin
16、tf(%2d,p-data);p=p-next;else printf(n链队为空);int main()int i,y=0;setqueue();/建立链队列display(q); printf(n请输入5个元素);for(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 queueemp
17、ty(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(se
18、qqueue *q) /出队if (!queueempty(q)q-front=(q-front+1)%maxlen;else printf (queue empty);(3)用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
19、(%c,x);(4)在主函数中调用print()函数验证程序int main()seqqueue *q;q=initqueue(q);print(q);return 0;4、调试分析 编译无错误5、用户使用说明 程序名为class2.exe,在debug文件夹里面。运行环境visual c+ 6.0。6、测试结果7、附录#include #include #define maxlen 10typedef structchar data maxlen;int front;int rear;seqqueue;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 qu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中职药学(药物储存技术)试题及答案
- 2025年高职计算机网络技术(网络安全基础)试题及答案
- 2025年中职水土保持(水土保持技术)试题及答案
- 2026年强电工程(强电施工)考题及答案
- 2025年中职消防工程技术(消防工程应用)试题及答案
- 2025年中职无人机航拍技术(航拍实操训练)试题及答案
- 2025-2026年初三生物(冲刺)上学期期中测试卷
- 深度解析(2026)《GBT 18310.26-2003纤维光学互连器件和无源器件 基本试验和测量程序 第2-26部分试验 盐雾》
- 深度解析(2026)《GBT 18115.2-2020稀土金属及其氧化物中稀土杂质化学分析方法 第2部分:铈中镧、镨、钕、钐、铕、钆、铽、镝、钬、铒、铥、镱、镥和钇量的测定》
- 深度解析(2026)《GBT 17980.107-2004农药 田间药效试验准则(二) 第107部分杀菌剂防治玉米大小斑病》
- GB/T 46725-2025协同降碳绩效评价城镇污水处理
- 2025家用美容仪行业简析报告
- 2025年中小学教育政策与法规考试试卷及答案
- 2025上海市崇明区疾病预防控制中心(区卫生健康监督所)后勤保障岗位招聘3人笔试考试参考题库及答案解析
- 妇产科学产褥期并发症教案
- 医疗器械经营
- 软件工程形形考作业3:基于UML的大学图书馆图书信息管理系统设计实验
- 形势与政策补考2-国开(XJ)-参考资料
- 国外惯性技术发展与回顾
- 课本剧西门豹治邺剧本
- 成都空港产业兴城投资发展有限公司空中客车飞机全生命周期服务项目环境影响报告
评论
0/150
提交评论