c语言从入门到精通——第23章.ppt

c语言从入门到精通——第23章.ppt

ID:49202116

大小:57.50 KB

页数:17页

时间:2020-02-01

c语言从入门到精通——第23章.ppt_第1页
c语言从入门到精通——第23章.ppt_第2页
c语言从入门到精通——第23章.ppt_第3页
c语言从入门到精通——第23章.ppt_第4页
c语言从入门到精通——第23章.ppt_第5页
资源描述:

《c语言从入门到精通——第23章.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第23章火车车厢重排问题描述问题分析及实现开发过程常见问题及解决第23章火车车厢重排问题描述问题分析及实现开发过程常见问题及解决第23章火车车厢重排问题描述问题分析及实现开发过程常见问题及解决第23章火车车厢重排问题描述问题分析及实现开发过程常见问题及解决火车车厢重排一列乱序排列货车车厢的火车,在经过车站时,可以从中间丢下这节车厢吗?而这节车厢却是终点站的车厢。那么,怎么样才可以使得出发前就可以以最快的理想的方式排好车厢号呢?使之在每站只丢下最后一节车厢,停留不长时间呢?本章讲解这类问题如何求解。

2、23.1问题描述一列货运列车共有n节车厢,每节车厢将停放在不同的车站,假定n个车站的编号分别为1~n,货运列车按照第n站至第1站的次序经过这些车站,车厢的编号与他们的目的地相同。为了便于从列车上卸下相应的车厢,必须重新排列车厢,使各车厢从前至后都按照编号1到n的次序排列,当所有的车厢都按照这种次序排列时,在每个车站只需卸掉最后一节车厢即可。23.2问题分析及实现23.2.1问题分析23.2.2问题实现23.2.3程序运行23.2问题分析及实现由问题描述可知,我们要实现的是将车厢放入缓冲轨,在需要压

3、栈时压栈,需要出栈时出栈,最后将排序结果输出23.2.1问题分析在这个问题的求解中,我们引入几个缓冲铁轨,在一个缓冲铁轨中放入车厢c,如果没有可用的缓冲铁轨,则返回0,如果空间不足,则引发异常否则返回1,为车厢c寻找最优的缓冲铁轨。23.2.2问题实现1.采用结构体保存过程数据通过定义一个结构体类型,此结构体实现对列车车厢序号进行栈的存储和管理。那么,根据这个思路,代码如下(代码23-1.txt)。01#defineStackSize100/*栈大小100个元素*/02#defineMaxLeng

4、th100/*最大字符串长度*/03typedefintDataType;/*栈元素的数据类型定义为整数*/04typedefstruct05{06DataTypedata[StackSize];07inttop;08}SeqStack;09voidInitial(SeqStack*S)/*置空栈*/10{11S->top=-1;12}13intIsEmpty(SeqStack*S)/*判栈空*/14{15returnS->top==-1;16}17intIsFull(SeqStack*S)/*判

5、栈满*/18{19returnS->top==StackSize-1;20}23.2.2问题实现2.输出结果将结果输出至屏幕,以循环打印的方式,调用标准输入输出函数printf,将结果回显。代码如下(代码23-2.txt)。23.2.2问题实现01voidOutput(int*minH,int*minS,SeqStackH[],intk,intn)02{03inti;04intc=Pop(&H[*minS]);05printf("把车厢%d送入缓冲铁轨%d输出",*minH,*minS);06

6、*minH=n+2;07for(i=1;i<=k;i++)08if(!IsEmpty(&H[i])&&(c=Top(&H[i]))<*minH){09*minH=c;10*minS=i;11}12}23.2.2问题实现3.将某个车厢号送入某个缓冲铁轨铁轨不空时,在此铁轨顶部的车厢编号最小,否则将一个车厢号通过缓冲铁轨压入栈。代码如下(代码23-3.txt)。23.2.2问题实现4.火车车厢重排主函数将所有火车车厢按数组规定的顺序送入缓冲铁轨等待排序。代码如下(代码23-4.txt)23.2.3程序

7、运行单击【调试】工具栏中的按钮,根据提示输入数据,按【Enter】键,即可输出如下结果。23.3开发过程常见问题及解决开发过程常见问题及解决办法如下,仅供参考。⑴程序输出结果一直是同样的结果,不代表程序有错误,而是因为程序目的就是要让无论列车车厢号如何乱序,最终排的序是顺序的。⑵此程序的难点之一如何模拟停在铁轨上的列车。采用数组来模拟,这是最普遍的一种方法。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。