版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机科学与工程学院算法与数据结构试验报告一专业班级10级计算机工程02试验地点计算机大楼计工教研室学生学号1005080222指导教师蔡琼学生姓名肖宇博试验时间2012-4-21试验项目算法与数据结构试验类别基础性() 设计性() 综合性() 其它( )试验目的及要求(1)掌握队列的特点及其存储方法;(2)掌握队列的常见算法和程序实现。成 绩 评 定 表类 别评 分 标 准分值得分合 计上机表现积极出勤、遵守纪律主动完成设计任务30分程序与报告程序代码规范、功能正确报告详实完整、体现收获70分备注: 评阅教师: 日 期: 年 月 日试 验 内 容 一、实验目的和要求1、实验目的:(1)掌握队
2、列的特点及其存储方法; (2)掌握队列的常见算法和程序实现。2、 实验内容: 火车车厢重排问题。转轨站示意图如下:出 轨入 轨581742963987654321H1H3H2 出 轨入 轨 581H1H3H2963742出 轨入 轨 58H1H3H29674321出 轨入 轨5H1H3H2968754321出 轨入 轨H1H3H2987654321(a) 将369、247依次入缓冲轨(b) 将1移至出轨,234移至出轨(c) 将8入缓冲轨,5移至出轨(d) 将6789移至出轨火车车厢重排算法伪代码如下:1. 分别对k个队列初始化;2. 初始化下一个要输出的车厢编号nowOut = 1; 3.
3、依次取入轨中的每一个车厢的编号;3.1 如果入轨中的车厢编号等于nowOut,则 3.1.1 输出该车厢; 3.1.2 nowOut+;3.2 否则,考察每一个缓冲轨队列 for (j=1; j<=k; j+) 3.2.1 取队列 j 的队头元素c; 3.2.2 如果c=nowOut,则 3.2.2.1 将队列 j 的队头元素出队并输出; 3.2.2.2 nowOut+; 3.3 如果入轨和缓冲轨的队头元素没有编号为nowOut的车厢,则 3.3.1 求小于入轨中第一个车厢编号的最大队尾元素所在队列编号j;3.3.2 如果 j 存在,则把入轨中的第一个车厢移至缓冲轨 j;3.3.2 如果
4、 j 不存在,但有多于一个空缓冲轨,则把入轨中的第一个车厢移至一个空缓冲轨;否则车厢无法重排,算法结束;3、实验要求: 使用顺序存储队列的方式完成该实验。 2、 设计分析根据实验要求,采用队列来完成本次实验。实验中定义了三个队列,一个用来存储输入的车厢号,另两个用来存储缓存出队顺序及序号。3、 源程序代码#include<stdio.h>#include<stdlib.h>#define Max 20typedef structint dataMax;int front,rear;squeue;void initqueue(squeue *&q)q=(squeu
5、e *)malloc(sizeof(squeue);q->front=q->rear=0;void enqueue(squeue *&q,int e)q->rear=(q->rear+1)%Max;q->dataq->rear=e;void dequeue(squeue *&q)q->front=(q->front+1)%Max;int gettop(squeue *&q)return q->dataq->front+1;int getrear(squeue *&q)return q->dataq
6、->rear;void reset(squeue *&q,squeue *&w1,squeue *&w2,int k)int nowout=1;int n1=0,n2=0;for(int i=0;i<50;i+)if(q->dataq->front+1=nowout)printf("%d号车厢出轨!t",q->dataq->front+1);nowout+;dequeue(q);else if(gettop(w1)=nowout)printf("%d号车厢出轨!t",gettop(w1);now
7、out+;dequeue(w1);else if(gettop(w2)=nowout)printf("%d号车厢出轨!t",gettop(w2);nowout+;dequeue(w2);elseint c=gettop(q);n1=getrear(w1);n2=getrear(w2);if(n1>n2)if(c>n1)enqueue(w1,c);dequeue(q);elseenqueue(w2,c);dequeue(q);elseif(c>n2)enqueue(w2,c);dequeue(q);elseenqueue(w1,c);dequeue(q);i
8、nt examenter(int a,int k)for(int i=1;i<=k;i+)if(ai!=i)return 0;break;void main()squeue *q,*w1,*w2;initqueue(q);initqueue(w1);initqueue(w2);int a10,k;label:printf("要输入几个车厢?n");scanf("%d",&k);if(k<=0)printf("请输入正确的车厢号!n");printf("*");printf("n&quo
9、t;);goto label;label2:printf("输入重排前的序列n");for(int i=1;i<=k;i+)scanf("%d",&ai);enqueue(q,ai);int r=examenter(a,k);if(r=0)printf("您的输入车厢号有误! 请输入连续自然数:n");goto label2;else if(r!=0)printf("重排前的序列为n");for(i=1;i<=k;i+)printf("%dt",ai);printf(&quo
10、t;n");printf("排列后的车厢号为:n");reset(q,w1,w2,k);elseprintf("我也不知道错哪了?'");四、测试用例(尽量覆盖所有分支)1.输入正确的序列后得到结果如图:2.倒输这几个数如图:3.顺序输这个序列4.如果输入的车厢数有误的时候(为负数或零)5.如果输入的序列不是连续自然数五、实验总结 先后学习了C/C+,对编程语言基本上有一些了解,但在数据结构试验程序设计过程中还是学到了很多。经过两天的设计,在不断翻阅以前资料的情况下,有针对性的复习了C/C+中指针、循环的相关理论知识和vc6.0的基础知识和应用技
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 特殊人群乙肝护理:儿童与老人
- 电信行业网络升级与业务拓展策略方案
- 2026年全球及中国碳足迹管理体系发展趋势与政策洞察报告
- 2026年欧盟美国基因治疗监管法规对比与双报策略
- 2026年增材制造技术在铸造模具应用案例
- 2026年通感一体化多目标识别与轨迹追踪算法验证
- 完成审计工作的基本概念和程序
- 所有权的内容和法律保护
- 2026年台风灾害防御培训
- 2026年实验室气体安全培训
- 2025 澳大利亚的奶制品产业课件
- 江苏省2026届高三上学期高考模拟考试(二)英语试卷(含解析无听力音频有听力原文)
- 2025年武汉创新投资集团有限公司公开选聘投资专业人员笔试参考题库附带答案详解
- 文化展示设计案例分析
- (正式版)DB51∕T 5066-2018 《四川省居住建筑油烟气集中排放系统应用技术标准》
- 2026年温州永嘉县国有企业面向社会公开招聘工作人员12人考试参考试题及答案解析
- 医疗人员跨境培训体系
- 2026年及未来5年中国音乐行业市场发展数据监测及投资战略咨询报告
- 无废工厂建设实施方案
- 长度和时间的测量课件2025-2026学年人教版物理八年级上册
- 2026年保安员资格证理论知识考试题库
评论
0/150
提交评论