火车车厢重排问题


2010高考 2019-11-21 12:15:40 2010高考
[摘要][火车车厢重排问题]实验二:火车车厢重排问题班级:2010级数学班 学号:201008101127 姓名:裴志威一 问题描述:一列货运列车共有n节车厢,每节车厢将停放在不同的车站,火车车厢重排问题[智库|专题]。假定n个车站的编号分别为1~n,货运列车按照第n站至第1站的顺序经过这些车站。车厢编号与

【www.nmgzasp.com--2010高考】

[火车车厢重排问题]

实验二:火车车厢重排问题

班级:2010级数学班 学号:201008101127 姓名:裴志威

一.问题描述:

一列货运列车共有n节车厢,每节车厢将停放在不同的车站,

火车车厢重排问题

[智库|专题]。假定n个车站的编号分别为1~n,货运列车按照第n站至第1站

的顺序经过这些车站。车厢编号与他们的目的地一样。为了便于从列车上卸掉相应的车厢,必须重排车厢顺序,使得各车厢

从前往后按编号1到n的次序排列。当所有车厢按照这种次序排列时,在每个车站只需卸掉最后一个车厢即可。我们在一个

转轨站里完成重拍的工作,在转轨站有一个入轨,一个出轨和k个缓冲轨(位于入轨和出轨之间)。

二.基本要求:

(1):设计存储结构表示n个车厢,k个缓冲轨以及入轨和出轨,

(2)设计并实现车厢重排算法,

(3)分析算法的时间性能。

三.算法描述:

为了重排车厢,需从前往后依次检查入轨上的所有车厢。如果正在检查的车厢就是下一个满足要求的车厢,可以直接把它放

到出轨上。否则,则把它移动到缓冲轨上,直到按输出顺序要求轮到它的时候才可以将他放到出轨上。缓冲轨是按照FILO

的方式使用的,因为车厢的进出都是在缓冲轨的顶端进行的。

在重排车厢过程中,仅允许以下活动:

1、车厢可以从入轨的前部移动到一个缓冲轨的顶部或者是出轨的左端

2、车厢可以从一个缓冲轨的顶部移动到出轨的左端

在将车厢放入缓冲轨的过程中,应该注意:有空的可以优先放,没空的缓冲轨时,要将新的车厢放在满足以下条件的缓冲轨

中:在缓冲轨的顶部车厢编号比新车厢的编号大的所有缓冲轨中选择顶部车厢编号最小的那个。

四.伪代码:

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 不存在,但有多于一个空缓冲轨,则把入轨中的第一个车厢移至一个空缓冲轨;否则车厢无法重排,算法结束;

五.源程序代码:

#include

#include

#define Max 20

typedef struct

int data[Max]; int front,rear;

}squeue;

void initqueue(squeue *&q)

{

}

void enqueue(squeue *&q,int e)

{

}

void dequeue(squeue *&q)

{

}

int gettop(squeue *&q)

{

}

int getrear(squeue *&q)

{

}

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->data[q->front+1]==nowout) { { } return q->data[q->rear]; return q->data[q->front+1]; q->front=(q->front+1)%Max; q->rear=(q->rear+1)%Max; q->data[q->rear]=e; q=(squeue *)malloc(sizeof(sq第一文库网ueue)); q->front=q->rear=0;

} nowout++; dequeue(q); else if(gettop(w1)==nowout) { printf("%d号车厢出轨!\t",gettop(w1)); nowout++; dequeue(w1); } else if(gettop(w2)==nowout) { } else { int c=gettop(q); n1=getrear(w1); n2=getrear(w2); if(n1>n2) { if(c>n1) { } else { enqueue(w2,c); dequeue(q); enqueue(w1,c); dequeue(q); printf("%d号车厢出轨!\t",gettop(w2)); nowout++; dequeue(w2); } else { } if(c>n2) { enqueue(w2,c); dequeue(q);

}

else { enqueue(w1,c); dequeue(q); } } } }

int examenter(int a[],int k)

{

}

void main()

{

squeue *q,*w1,*w2; initqueue(q); initqueue(w1); initqueue(w2); int a[10],k; label: printf("要输入几个车厢?\n"); for(int i=1;i<=k;i++) { } if(a[i]!=i) { } return 0; break; scanf("%d",&k); if(k<=0) { } printf("请输入正确的车厢号!\n"); printf("****************************************************"); printf("\n"); goto label;

} for(int i=1;i<=k;i++) { } int r=examenter(a,k); if(r==0) { } else if(r!=0) { } else { } printf("我也不知道错哪了?""); printf("重排前的序列为\n"); for(i=1;i<=k;i++) { } printf("\n"); printf("排列后的车厢号为:\n"); reset(q,w1,w2,k); printf("%d\t",a[i]); printf("您的输入车厢号有误! 请输入连续自然数:\n"); goto label2; scanf("%d",&a[i]); enqueue(q,a[i]);

六.测试结果

1.输入正确的序列后得到结果如图:

2.如果输入的车厢数有误的时候(为负数或零)

六、总结

本次数据结构实验主要是练习使用队列的思想,我做的是火车重排问题的实验,此实验在课本上有一些讲解,也给出来主要函数TrainPermute()的主要编写思路,减轻了自己的工作量,不过由于此程序的代码比较复杂,在编译调试过程中也很耗费时间,通过设置断点,分步调试,才使得程序没有了bug,

资料大全

《火车车厢重排问题》(http://www.lp1901.com)。例如,由于程序用了较多的循环,包括多重循环,在刚刚写出代码的时候常常陷入死循环,而因为代码冗长,仅仅通过看代码很难找出逻辑上的错误。功夫不负有心人,最后终于用与非门的思想解决了这个死循环问题,并简单优化程序。

总的来说,本程序由于使用了模板类结构,扩展性还算比较好。但是代码部分有些冗长,可读性不算太好。如果要做下

一步工作的话,应该是尽量精简代码,使得程序更加具有实用性和可读性

本文来源:http://www.nmgzasp.com/gk/43832/

相关标签:
相关阅读
  • 【生物高考大纲】高考生物复习策略:重视基础和训练量 【生物高考大纲】高考生物复习策略:重视基础和训练量
  • 高考励志语录|高考励志主题的经典文章 高考励志语录|高考励志主题的经典文章
  • [高考最牛钉子户张非]高考最牛钉子户土豪梁实参加20次高考 [高考最牛钉子户张非]高考最牛钉子户土豪梁实参加20次高考
  • [励志的故事名人故事]名人励志:刘国梁的励志故事 [励志的故事名人故事]名人励志:刘国梁的励志故事
  • [生活情感微博]情感生活:一个高中生的爱情故事 [生活情感微博]情感生活:一个高中生的爱情故事
  • 【全国开设海洋资源开发技术专业院校有哪些】全国开设海洋资源开发技术专业院校有哪些 【全国开设海洋资源开发技术专业院校有哪些】全国开设海洋资源开发技术专业院校有哪些
  • 【长沙理工大学城南学院全国排名】长沙理工大学城南学院专业排名 【长沙理工大学城南学院全国排名】长沙理工大学城南学院专业排名
  • 闽北职业技术学院官网|闽北职业技术学院专业排名 闽北职业技术学院官网|闽北职业技术学院专业排名
为您推荐
  • 【淄博职业学院专业排名】冀中职业学院专业排名
    【淄博职业学院专业排名】冀中职业学院专业排名
    冀中职业学院是国办全日制普通高等职业学院;学院现有南北两个校区,占地250亩。设有“四系一部”的专业体系:信息技术系、机电系、应用艺术系、人文管理系、公共教学部,面向全国12个省招生。学院2010年建成12492平米的图书教学综合楼,建成高标准阳光学生餐厅等。学院建有校内实训基地37个,其中中央财政
  • 三亚学院哪个专业最好_三亚学院专业排名最好的专业有哪些
    三亚学院哪个专业最好_三亚学院专业排名最好的专业有哪些
    三亚学院是国家教育部批准成立的民办普通本科院校,由吉利控股集团董事长、沃尔沃汽车公司董事长李书福先生出资建设。学校位于国际著名旅游城市三亚,环抱古人类文明遗址落笔洞,自然风光与人文古韵完美交融,写意生态、和谐校园。2010年即已形成在校生两万人的本科办学规模。学校当前发展主动融入“一带一路”建设和南
  • 泉州医学高等专科学校有哪些专业|泉州医学高等专科学校专业排名
    泉州医学高等专科学校有哪些专业|泉州医学高等专科学校专业排名
    泉州医学高等专科学校,坐落于泉州市洛阳江畔,是一所全日制公办的国家示范性骨干高职院校建设单位。在80年的办学历程中,学校逐渐形成了“质量立校、人才强校、特色兴校、科研优校”的办学理念,凝练了“精诚惠世”的校训精神,为社会培养、输送了38000多名大、中专实用型各类专业卫生技术人才。2010年被确定为
  • 【贵阳学院专业排名最好的专业有哪些】贵阳学院专业排名最好的专业有哪些
    【贵阳学院专业排名最好的专业有哪些】贵阳学院专业排名最好的专业有哪些
    贵阳学院坐落在贵阳市龙洞堡新城,是在原贵阳师专和金筑大学两所专科学校有机整合的基础上,于2004年5月经教育部批准成立的普通本科院校,具有学士学位授予权,实行省市共建以贵阳市为主的办学体制。2010年12月作为全国普通高等学校本科教学工作合格评估的10所试点学校之一,接受并通过了教育部专家组的评估。
  • 广州康大职业技术学院学费|广州康大职业技术学院专业排名
    广州康大职业技术学院学费|广州康大职业技术学院专业排名
    广州康大职业技术学院是全日制综合性普通高校。学院自开办以来,已为社会培养11000多名专业技术人才,现有全日制普通高职在校生7500多人,2010年12月通过教育部高职高专院校人才培养工作评估。学院各类设施齐全,建筑面积165903万平方米,教学仪器设备总值3000多万元,图书馆藏书100万册,校内
  • 南京中医药大学翰林学院宿舍|南京中医药大学翰林学院专业排名最好的专业有哪些
    南京中医药大学翰林学院宿舍|南京中医药大学翰林学院专业排名最好的专业有哪些
    南京中医药大学翰林学院始建于2002年3月,2005年5月被教育部批准为独立学院。2010年9月,学院移址素有“文昌水秀,祥泰之州”之誉的苏中历史名城泰州市办学,坐落在国家医药高新技术产业开发区内,为首家进驻中国医药城的全日制本科院校,也是全省高等教育综合改革试点独立学院之一。创建时间学校类型学科类
  • 【南京中医药大学翰林学院宿舍】南京中医药大学翰林学院2016年高考录取结果查询入口
    【南京中医药大学翰林学院宿舍】南京中医药大学翰林学院2016年高考录取结果查询入口
    南京中医药大学翰林学院始建于2002年3月,2005年5月被教育部批准为独立学院。2010年9月,学院移址素有“文昌水秀,祥泰之州”之誉的苏中历史名城泰州市办学,坐落在国家医药高新技术产业开发区内,为首家进驻中国医药城的全日制本科院校,也是全省高等教育综合改革试点独立学院之一。创建时间学校类型学科类
  • 2017高考数学全国卷1_2017高考数学答题时间分配
    2017高考数学全国卷1_2017高考数学答题时间分配
    考试过程中,很多同学常会遇到不能在规定时间内完成试卷的情况。针对这一问题,下面是高考学习网小编为你整理关于2017高考数学答题时间分配的内容,希望大家喜欢!12017高考数学答题时间分配题号题型分值答题时间分配第一大题选择题(1~12)6030分钟左右第二大题填空题(13~16)2010-12分
  • 中央戏剧学院在哪_中央戏剧学院校花甘婷婷
    中央戏剧学院在哪_中央戏剧学院校花甘婷婷
    “校花”永远是校园里最亮眼的风景,一举一动,为原本活泼的校园增添晶亮,更牵动万千少男的心。小编整理了中央戏剧学院校花甘婷婷的资料,看看是你的菜吗?  甘婷婷,中国内地女演员。2006年,凭借《河内,河内》获得越南金风筝国际电影节“最佳女演员奖”;2010年,凭借《水浒传》获得搜狐电视剧盛典最佳女
  • 【日本北海道大学 排名】日本北海道大学传媒专业
    【日本北海道大学 排名】日本北海道大学传媒专业
    在亚洲留学国家中,去日本留学的学生越来越多,日本高校林立,北海道大学是比较著名的大学。去日本北海道大学读书的学生不少,很多学生会选择传媒专业,日本北海道大学传媒专业怎么样呢?下面带大家详细了解。  日本北海道大学传媒专业  北海道大学的国际传媒观光专业是从2010年新设立的专业,该专业特点在于招