概述
入轨道上的车厢为无序的,出轨道车厢为从右向左递增排序,使的在对应经过车站时可以直接卸载下尾部车厢而不用调整其他车厢。
思路:首先要确定出轨道上下一个应来的车厢序号:nextCarToOutput,到达后令其递增
缓冲轨道上存入轨道上进来但还不能进入出轨道的车厢,每一个缓冲轨道中从顶部到底部数据递增,如果一个数据进入缓冲轨道,如果所有缓冲轨道顶部的数据都大于这个数据,那么其进入这些数据中最小的对应的缓冲轨道
//全局变量
arrayStack<int> *track;//缓冲轨道数组
int numberOfcars;//车厢的数量
int numberOfTracks;//缓冲轨道数
int smallestCar;//缓冲轨道中编号最小的车厢
int itsTrack;//编号最小的车厢对应的轨道号
bool railRoad(int inputOrder[],int thenumberOfcars,int thenumberOfTracks )
{
numberOfcars=thenumberOfcars;
numberOfTracks=thenumberOfTracks;
//创建缓冲轨道
track=new arrayStack<int>[thenumberOfTracks+1];
int nextCarToOutput=1;//初始化为1,第一个应该是1
smallestCar=numberOfcars+1;//缓冲轨道无车厢
//重排车厢
for(int i=1;i<=numberOfcars;i++)
{
if(inputOrder[i]==nextCarToOutput)
{
//inputOrder[i]输出到输出轨道
nextCarToOutput++;
while(smallestCar==nextCarToOutput)
{
outputFromHoldingTrack();//从缓冲轨道取出车车厢到输出轨道,然后再重新确定smallestcar的值
nextCarToOutput++;
}
}
else
if(!putInholdingTrack(inputOrder[i]))//把车厢移入一个缓冲轨道函数
return false;
return true;
}
最后
以上就是愉快皮皮虾为你收集整理的利用栈实现车厢重排的全部内容,希望文章能够帮你解决利用栈实现车厢重排所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复