回 帖 发 新 帖 刷新版面

主题:给点思路吧 没头绪

(3).模拟停车场管理问题
  设停车场只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出.汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车场为它让路,待该辆车开出大门后,为它让路的车辆再按原次序进入车场.试设计一个停车场管理程序.
基本要求:
  以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的数据序列进行模拟管理.每一组输入数据包括三个数据项:汽车”到达”或”离开”信息, 汽车牌照号码以及到达离开的时刻. 对每一组输入数据进行操作后的输出信息为:若是车辆到达, 则输出汽车在停车场内或便道上停车位置; 若是车辆离去, 则输出汽车在停车场内停留的时间和应交纳的费用(便道上停留的时间不收费).栈以顺序存储结构,队列以链式存储结构实现.
[测试数据]
   设n=2,输入信息为: (‘A’,1,5), (‘D’,2,10), (‘A’,3,20), (‘A’,4,25), (‘A’,5,30), (‘D’,4,40), (‘E’,0,0) 其中’A’表示到达, ‘D’表示离开, ‘E’表示输入结束.

(一)算法:
1.    栈, 队列初始化.
2.    反复进行如下操作:
(A). 输入汽车”到达”(或”离开”或”结束”)信息,汽车牌照号码以及到达(或离开)的时刻.
(B). 若是汽车”到达”,则先检查停车场是否满,若不满,则将汽车开入停车场,将相应信息(汽车牌照号码,汽车到达时刻)压入栈中,输出”汽车在栈中的位置”;否则(即停车场已满),则将汽车开入便道,将相应信息 (汽车牌照号码) 记入队列,输出”汽车在便道.”

否则若是汽车”离开”,先检查该汽车是否在停车场内,若在停车场内,则计算且输出”该汽车在在停车场内的停留时间”(即该汽车离开停车场时刻 - 该汽车到达停车场时刻),再将该汽车从停车场开出(即从栈中删除).便道上的第一辆汽车开入,(须在栈顶加入该汽车的号码及到达停车场时刻---即刚开出的那辆汽车离开的时刻,同时,删除队列的队头元素). 否则,若该汽车在便道,则从便道上开出该汽车,(从队列中删除该汽车),输出”汽车从便道上开出”. 否则,输出”出错”信息.

否则,若是”结束”信息, 则从循环中跳出, 结束.

(二)数据结构:
栈: 顺序存储结构
每个结点是:
汽车牌照号码    汽车到达时刻

队列: 链式存储结构
每个结点是:
汽车牌照号码    下一个结点地址

回复列表 (共2个回复)

沙发

自己做啊,这样对你好啊!!!!!

板凳

这个是我们当初学数据结构的时候的作业
我自己写了一个,没调试就交上去了,后来运行的时候遇到了点小麻烦
程序已经扔了,因为没有保留的价值。思路题目已经说的很明白不能再明白了:
停车场是栈,而等待车辆是队列,通用的元素是车
后面还有哪里不明白?

我来回复

您尚未登录,请登录后再回复。点此登录或注册