【問題描述】
設停車場是乙個可停放」輛汽車的狹長通道,且只有乙個大門可供汽車進出。汽車在停車場內按車輛到達時間的先後順序,依次由北向南排列(大門在最南端,最先到達的第一輛車停放在車場的最北端),若車場內已停滿」輛汽車,則後來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開人;當停車場內某輛車要離開時,在它之後進人的車輛必須先退出車場為它讓路,待該輛車開出大門外,其他車輛再按原次序進人車場,每輛停放在車場的車在它離開停車場時必須按它停留的時間長短交納費用。試為停車場編制按上述要求進行管理的模擬程式。
【基本要求】
以棧模擬停車場,以佇列模擬車場外的便道,按照從終端讀人的輸人資料序列進行模擬管理。每一組輸人資料報括三個資料項:汽車「到達」或「離去」資訊、汽車牌照號碼以及到達或離去的時刻。對每一組輸人資料進行操作後的輸出資訊為:若是車輛到達,則輸出汽車在停車場內或便道上的停車位置;若是車輛離去,則輸出汽車在停車場內停留的時間和應交納的費用(在便道上停留的時間不收費)。棧以順序結構實現,佇列以鍊錶結構實現。
【測試資料】
設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』表示到達(arrival);『d』
表示離去(departure);'e』表示輸人結束(end)。
【實現提示】
需另設乙個棧,臨時停放為給要離去的汽車讓路而從停車場退出來的汽車,也用順序儲存的結構實現。輸入資料按到達或離去的時刻有序。棧中每個元素表示一輛汽車,包含兩個資料項:汽車的牌照號碼和進入停車場的時刻。
主函式內:
一、自定義標頭檔案內容:
#include
#include
#include
using namespace std;
#define a 1
#define d 2
#define e eof
#define ok 1
#define false -1
#define ture 1
#define error -1
#define infeasible -1
typedef
int status;
typedef
int elemtype;
二、結構體變數宣告typedef
struct carlnode//定義車輛型別
typedef
struct carlist//停車棧
typedef
struct car_que //等待停車佇列
typedef
struct swaplist //臨時棧,為離開車輛讓出位置
三、函式宣告//1、初始化
status initcarlist
(carlist &l,
int n,
double m)
//初始化停車場
status initquelist
(car_que &l)
//初始化等待佇列
status initswaplist
(swaplist &l,
int n)
//初始化臨時停車道
//2、插入
void
insertquelist
(car_que &l, carlnode* car)
//尾插入等待佇列佇列
intinsertcarlist
(carlist &l, car_que &l2, carlnode *car,
int time1)
//進入停車場
intinsertswaplist
(carlist &l1, swaplist &l2,carlnode car)
//將不離開的車輛移入臨時停車道
void
insertswaplist_turnback
(swaplist &l1, carlist &l2)
//將臨時車道內的車放回停車場
//3、移動車輛
void
deleteque
(que &l1)
//剩餘車輛前移
void
deletelist
(carlist &l1, swaplist l2, que l3, carlnode car)
//離開停車場
//4、判斷車輛動作
intcharge
(char n)
//5、檢視當前停車場使用情況
void
visit
(carlist l1, car_que l2,
int time)
四、完整**#include
"pch.h"
#include
"test.h"
typedef
struct carlnode carlnode;
typedef
struct carlistcarlist;
typedef
struct car_que que;
typedef
struct swaplist swaplist;
//1、初始化
status initcarlist
(carlist &l,
int n,
double m)
status initquelist
(car_que &l)
status initswaplist
(swaplist &l,
int n)
//2、插入
void
insertquelist
(car_que &l, carlnode* car)
intinsertcarlist
(carlist &l, car_que &l2, carlnode *car,
int time1)
else
}int
insertswaplist
(carlist &l1, swaplist &l2,carlnode car)
if(j == l1.length -1)
} j =0;
while
(i>num)
return num;
}void
insertswaplist_turnback
(swaplist &l1, carlist &l2)
}//3、移動車輛
void
deleteque
(que &l1)
void
deletelist
(carlist &l1, swaplist l2, que l3, carlnode car)
else}}
//4、判斷車輛動作
intcharge
(char n)
}//5、檢視當前停車場使用情況
void
visit
(carlist l1, car_que l2,
int time)
cout <<
"停車場空閒車位有:"
<< l1.size - l1.length <<
"個"<< endl;
carlnode *p = l2.carlist->next;
if(p ==
null
) cout <<
"目前無車輛排隊"
<< endl;
else
while(!
(p ==
null))
;}}int
main()
return0;
}
資料結構 停車場管理
問題描述 設停車場是乙個可停放n輛汽車的狹長通道,且只有乙個大門可供汽車進出。汽車在停車場內按車輛到達時間的先後順序,依次由北向南排列 大門在最南端,最先到達的第一輛車放在車場的最北端 若車場內已停滿n輛汽車,則後來的汽車只能在門外的便道上等待,一旦有車開走,則排在便道上的第一輛車即可開入 當停車場...
資料結構 停車場管理
題目 設停車場內只有乙個可停放n輛汽車的狹長通道,且只有乙個大門可供汽車進出 汽車在停車場內按車輛到達時間的先後順序,依次由北向南排列 大門在最南端,最先到達的第一輛車停放在車場的最北端 若車場內已停滿n輛汽車,則後來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入 當停車...
資料結構 停車場管理
二 概要設計 三 詳細設計 四 除錯分析 五 使用者手冊 六 測試結果 停車場是乙個可停放n輛汽車的狹長通道,且只有乙個大門可供汽車進出。汽車在停車場內按車輛到達時間的先後順序,依次由北向南排列 大門在最南端,最先到達的第一輛車放在車場的最北端 若車場內已停滿n輛汽車,則後來的汽車只能在門外的便道上...