




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学与工程学院算法与数据结构试验报告一专业班级10级计算机工程02试验地点计算机大楼计工教研室学生学号1005080222指导教师蔡琼学生姓名肖宇博试验时间2012-4-21试验项目算法与数据结构试验类别基础性() 设计性() 综合性() 其它( )试验目的及要求(1)掌握队列的特点及其存储方法;(2)掌握队列的常见算法和程序实现。成 绩 评 定 表类 别评 分 标 准分值得分合 计上机表现积极出勤、遵守纪律主动完成设计任务30分程序与报告程序代码规范、功能正确报告详实完整、体现收获70分备注: 评阅教师: 日 期: 年 月 日试 验 内 容 一、实验目的和要求1、实验目的:(1)掌握队列的特点及其存储方法; (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.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 如果 j 不存在,但有多于一个空缓冲轨,则把入轨中的第一个车厢移至一个空缓冲轨;否则车厢无法重排,算法结束;3、实验要求: 使用顺序存储队列的方式完成该实验。 2、 设计分析根据实验要求,采用队列来完成本次实验。实验中定义了三个队列,一个用来存储输入的车厢号,另两个用来存储缓存出队顺序及序号。3、 源程序代码#include#include#define Max 20typedef structint dataMax;int front,rear;squeue;void initqueue(squeue *&q)q=(squeue *)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-rear;void reset(squeue *&q,squeue *&w1,squeue *&w2,int k)int nowout=1;int n1=0,n2=0;for(int i=0;idataq-front+1=nowout)printf(%d号车厢出轨!t,q-dataq-front+1);nowout+;dequeue(q);else if(gettop(w1)=nowout)printf(%d号车厢出轨!t,gettop(w1);nowout+;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(n1n2)if(cn1)enqueue(w1,c);dequeue(q);elseenqueue(w2,c);dequeue(q);elseif(cn2)enqueue(w2,c);dequeue(q);elseenqueue(w1,c);dequeue(q);int 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);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(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届广东省东华高级中学化学高二第一学期期末教学质量检测模拟试题含答案
- 幼儿园活动室布置方案
- IT薪酬管理制度及薪酬体系设计方案
- 恶劣天气安全教育课件
- 恩格斯简介课件
- 幼儿园托班活动方案
- 小车驾驶考试试题及答案
- 音乐教师口试题及答案
- 烟台市小学考试试题及答案
- 2025至2030年中国手机电池块市场分析及竞争策略研究报告
- 2025年广东省中考地理试题卷(标准含答案)
- KYT考试题及答案
- 聚合工艺作业培训课件
- 船舶代理公司管理制度
- 口腔门诊医疗质控标准化培训
- 突发公共卫生健康讲座
- 2025年福建新华发行(集团)有限责任公司南平地区招聘笔试参考题库含答案解析
- DZ/T 0054-2014定向钻探技术规程
- CJ/T 43-2005水处理用滤料
- 护理十八项核心制度考试题与答案
评论
0/150
提交评论