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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

火车车厢重排问题队列c语言.docx

1、火车车厢重排问题队列c语言计算机科学与工程学院算法与数据结构试验报告 一 专业班级10 级计算机工程 02试验地点计算机大楼计工教研室学生学号22指导教师蔡琼学生姓名肖宇博试验时间2012-4-21试验项目算法与数据结构试验类别基础性() 设计性() 综合性()其它( )试(1)掌握队列的特点及其存储方法;验目(2)掌握队列的常见算法和程序实现。的及要求成绩评定表类别评分标准分值得分合计上机表现积极出勤、遵守纪律30 分主动完成设计任务程序与报告程序代码规范、功能正确70 分报告详实完整、体现收获备注:评阅教师:日 期:年 月 日试验内容一、实验目的和要求1、实验目的:(1)掌握队列的特点及其

2、存储方法;(2)掌握队列的常见算法和程序实现。2、实验内容 :火车车厢重排问题。转轨站示意图如下:H13H3入 轨H29631581HH入 轨3出 轨742H2(a)将 369、247 依次入缓冲轨96H1554321入 轨H3出 轨87H2(c) 将 8 入缓冲轨, 5 移至出轨1出 轨96H1584321H入 轨3出 轨7H2(b)将 1 移至出轨, 234 移至出轨H11入 轨H3出 轨H2(d) 将 6789 移至出轨火车车厢重排算法伪代码如下:1.分别对 k 个队列初始化;2. 初始化下一个要输出的车厢编号 nowOut = 1;3.依次取入轨中的每一个车厢的编号;如果入轨中的车厢编

3、号等于 nowOut,则输出该车厢;nowOut+ ;否则,考察每一个缓冲轨队列for (j=1; j=k; j+)取队列 j 的队头元素 c;如果 c=nowOut,则将队列 j 的队头元素出队并输出;nowOut+ ;如果入轨和缓冲轨的队头元素没有编号为 nowOut的车厢,则求小于入轨中第一个车厢编号的最大队尾元素所在队列编号 j;如果 j 存在,则把入轨中的第一个车厢移至缓冲轨 j ;如果 j 不存在,但有多于一个空缓冲轨,则把入轨中的第一个车厢移至一个空缓冲轨;否则车厢无法重排,算法结束;3、实验要求:使用顺序存储队列的方式完成该实验。二、设计分析根据实验要求,采用队列来完成本次实验

4、。实验中定义了三个队列,一个用来存储输入的车厢号,另两个用来存储缓存出队顺序及序号。三、源程序代码#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-fro

5、nt=(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

6、)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);

7、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;

8、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.如果

9、输入的车厢数有误的时候(为负数或零)5.如果输入的序列不是连续自然数五、实验总结先后学习了 C/C+,对编程语言基本上有一些了解,但在数据结构试验程序设计过程中还是学到了很多。经过两天的设计, 在不断翻阅以前资料的情况下, 有针对性的复习了 C/C+中指针、循环的相关理论知识和的基础知识和应用技巧,最后比较成功的完成了本次的设计。这次的实验是完成火车厢重徘问题,依旧采用的检查用户的错误输入机制,充分考虑了用户的各种错误,比如输入的序列不是连续自然数,如果输入的车厢数有误的时候(为负数或零)等等的情况,完成了该次实验,主要出现的问题在于数组的下标问题,老是出现越界访问错误等等,这要在下次的实验当中多加注意!

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

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