問題描述
設停車場是乙個可停放 n 輛汽車的狹長通道,且只有乙個大門可供汽車進出。汽車在停車場內按車輛到達時間的先後順序,依次由北向南排列(大門在最南端,最先到達的第一輛車停放在車場的最北端),若車場內已停滿 n 輛汽車,則後來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當停車場內某輛車要離開時,在它之後進入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其他車輛再按原次序進入車場,每輛停放在車場的車在它離開停車場時必須按它停留的時間長短交納費用。試為停車場編制按上述要求進行管理的模擬程式。
基本要求
以棧模擬停車場,以佇列模擬車場外的便道,按照從終端讀入的輸入資料序列進行模擬管理。每一組輸入資料報括三個資料項:汽車「到達」或「離去」資訊、汽車牌照號碼以及到達或離去的時刻。對每一組輸入資料進行操作後的輸出資訊為:若是車輛到達,則輸出汽車在停車場內或便道上的停車位置;若是車輛離去,則輸出汽車在停車場內停留的時間和應交納的費用(在便道上停留的時間不收費)。
測試用例(舉例)
設n = 2,輸入資料為:(『a』,1,5),(『a』,2,10),(『d』,1,15),(『a』,3,20),(『a』,4,25),(『a』,5,30),(『d』,2,35),(『d』,4,40),(『e』,0,0)。其中:『a』表示車輛到達;『d』表示車輛離去;『e』表示輸入結束。
要求用棧和佇列實現,根據題目要求,當停車場內某輛車要離開時,在它之後進入停車場的車都必須先退出停車場為它讓路,待其開出停車場後,這些輛再依原來的次序進場的功能,就可以設計兩個棧,其中乙個棧用來模擬停車場,另乙個棧用來模擬臨時停車場。停車場有車出來,讓路的車進入模擬停車場,然後再由模擬停車場進入停車場。超過停車場容量的車停入便道,便道用佇列模擬。
本**的棧和佇列都是用的順序結構。
1 #include2view codeusing
namespace
std;34
class node ;
9class astack :public node
18 ~astack() ;
19bool
push(node a)
24bool pop(node &a) 29}
30int
length()
33bool topvalue(node &a)
38};
39class aqueue :public node
51 ~aqueue() ;
52bool
enqueue(node it)
58bool dequeue(node &it)
64int
length()
67};
68void input(astack &parking1, aqueue &wait,node s)
73else77}
78int output(astack &parking1, astack &parking2,aqueue &wait, node s)
84if (parking1.topvalue(temp))
88else time = -1;89
while
(parking2.pop(temp))
90parking1.push(temp);
91if
(time) 97}
98return
time;99}
100int
main() ;
114if (a == '
e') break
;115
else
if (a == 'a'
) 119
else
126}
127 system("
pause");
128return0;
129 }
停車場模擬
include include define n 3 define m 4 define price 2 typedef struct sqstack typedef struct sqqueue void initstack sqstack s int stackempty sqstack s i...
停車場模擬
檔名稱 專案7.cbp 作 者 姜延鍇 完成日期 2016年10月20日 版 本 號 v1.0 問題描述 設停車場是乙個可停放n輛汽車的狹長死胡同,南邊封口,汽車只能從北邊進出 這樣的停車場世間少有 汽車在 停車場內按車輛到達時間的先後順序,最先到達的第一輛車 停放在車場的最南端,依次向北排開。若車...
停車場停車
這是乙個簡單的停車場作業,目前為止只能實現停車,剩下的 有問題,還在解決中,就先不拿出來了 include parking.h include void menu 建立停車場佇列與等候佇列 int initqueue parkqueue p p front 0 p rear 0 return tru...