利用栈实现车厢重排

博客探讨了如何将无序的车厢通过栈进行重排,使得出轨道的车厢按从右向左递增的顺序排列,便于在指定车站直接卸载尾部车厢。策略包括确定下一个应出站的车厢序号nextCarToOutput,并利用缓冲轨道存储暂时无法出站的车厢,保持缓冲轨道内部数据递增,确保新进车厢能进入合适的位置。
摘要由CSDN通过智能技术生成

入轨道上的车厢为无序的,出轨道车厢为从右向左递增排序,使的在对应经过车站时可以直接卸载下尾部车厢而不用调整其他车厢。

思路:首先要确定出轨道上下一个应来的车厢序号: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=numberO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值