【問題描述】
設停車場是乙個可停放n輛汽車的狹長通道,且只有乙個大門可供汽車進出。汽車在停車場內按車輛到達時間的先後順序,依次由北向南排列(大門在最南端,最先到達的第一輛車放在車場的最北端),若車場內已停滿n輛汽車,則後來的汽車只能在門外的便道上等待,一旦有車開走,則排在便道上的第一輛車即可開入;當停車場內某輛車要離開時,在它之後進入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其他車輛再按原次序進入車場,每輛停放在車場的車在他離開停車場時必須按它停留的時間長短交納費用。試為停車場編制按上述要求進行管理的模擬程式。
【基本要求】
以棧模擬停車場,以佇列模擬車場外的便道,按照以終端讀入的輸入資料序列進行模擬管理。每一組輸入資料報括三個資料項:汽車「到達」或「離去」資訊、汽車牌照號碼以及到達或離去的時刻。對每一組輸入資料進行操作後的輸出資訊為:若車輛到達,則輸出汽車在停車場內或便道上的停車位置;若是車輛離去,則輸出汽車在停車場內停留的時間和應該繳納的費用(在便道上停留的時間不收費)。
【測試資料】
設n = 2,輸入資料為:(a,1,50),(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表示輸入結束。
【程式實現】
#include#include#include#includestruct stackstruct /*棧的結構體*/
;struct queuestruct
;struct stackstruct *stackhead1, *stackend1;
struct stackstruct *stackhead2, *stackend2;
struct queuestruct *queuehead, *queueend;
int stack1count, stack2count; /*棧中元素總數*/
int queuecount; /*佇列中元素總數*/
void push(int flag, struct stackstruct *p)
else
stack1count++;
} else if (flag == 1) /*棧2進棧操作*/
else
stack2count++; }}
struct stackstruct *pop(int id, int time)
else
stack = null;
} return stack;
}struct stackstruct *pop1()
void enqueue(struct stackstruct *p)
else
queuecount++;
}struct stackstruct *dequeue(int time)
else
queuehead = queuehead->next;
return stack;
}int main()
else /*棧滿,進佇列操作*/
}else if (s == 'd') /*汽車離去*/
while (stack2count != 0)
if (queuecount != 0)
}} return 0;
}
實現這個程式主要是利用了兩個棧和乙個佇列。其中佇列模擬便道,乙個棧用於模擬停車場,另乙個棧主要是用於模擬汽車離開時後面汽車出停車場等待汽車離開後重新進入停車場的過程。主要是利用了pop和push的基本操作,佇列也是運用了最基本的進出佇列操作。 資料結構 停車場管理
題目 設停車場內只有乙個可停放n輛汽車的狹長通道,且只有乙個大門可供汽車進出 汽車在停車場內按車輛到達時間的先後順序,依次由北向南排列 大門在最南端,最先到達的第一輛車停放在車場的最北端 若車場內已停滿n輛汽車,則後來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入 當停車...
資料結構 停車場管理
二 概要設計 三 詳細設計 四 除錯分析 五 使用者手冊 六 測試結果 停車場是乙個可停放n輛汽車的狹長通道,且只有乙個大門可供汽車進出。汽車在停車場內按車輛到達時間的先後順序,依次由北向南排列 大門在最南端,最先到達的第一輛車放在車場的最北端 若車場內已停滿n輛汽車,則後來的汽車只能在門外的便道上...
資料結構 停車場管理 C C )
問題描述 設停車場是乙個可停放 輛汽車的狹長通道,且只有乙個大門可供汽車進出。汽車在停車場內按車輛到達時間的先後順序,依次由北向南排列 大門在最南端,最先到達的第一輛車停放在車場的最北端 若車場內已停滿 輛汽車,則後來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開人 當停車...