設停車場(如下圖1所示)內只有乙個可停放幾量汽車的狹長通道,且只有乙個大門可供汽車進出。汽車在停車場內按車輛到達時的先後順序,依次由北向南排列(大門在最南端,最先到達的第一輛車停放在車場的最北端),若車場內已經停滿幾量汽車,則後來的汽車只能在門外的便道上等候,一旦停車場內有車開走,則排在便道上的第一輛汽車即可開入;當停車場內某車輛要離開時,由於停車場是狹長的通道,在它之後開入車場的車輛必須先退出車場為它讓路,待該車輛開出大門外後,為它讓路的車輛再按原次序進入車場。在這裡假設汽車不能從便道上開走。試設計乙個停車場管理程式(這裡只是乙個假想的停車場管理,並不代表實際的停車場管理)。
汽車在停車場內進出是按照棧的運算方式來實現的,先到的先進停車場;停車場的汽車離開停車場時,汽車場內其它汽車為該輛汽車讓路,也是按棧的方式進行;汽車在便道上等候是按佇列的方式進行的。因此,將停車場設計成乙個棧,汽車讓路也需要另乙個棧來協助完成,汽車進出便道用佇列來實現。
即兩個棧,乙個停車棧,乙個讓車棧;乙個佇列,便道佇列。
*儲存結構如下:
#define stacksize 10
typedef
struct sqstack
sqstacktp;
typedef
struct linked_queue
lqueuetp;
typedef
struct
queptrtp;
要求:
1)接受命令和車號,若是汽車要進停車場,先判斷停車場棧是否滿,若不滿,則汽車入棧,否則汽車進入便道佇列等候。
2)若是汽車要離開停車場,為給汽車讓路,將停車場棧上若干輛汽車入臨時棧,等這輛車出停車場後,臨時棧中的汽車出棧,在回到停車場棧,然後看便道佇列是否為空,若不空則說明有汽車等候,從隊頭取出汽車號,讓該車進入停車場棧。
3)重複1),2)直到為退出命令(車號為0或負數)。
**:
#include
#include
#define stacksize 3
using
namespace std;
typedef
struct sqstack
sqstacktp;
typedef
struct linked_queue
lqueuetp;
typedef
struct
queptrtp;
intstackin
(sqstacktp &s,
int x)
//x為車號
else
return1;
//棧滿返回0
}int
stackout
(sqstacktp &s)
}int
emptystack
(sqstacktp s)
void
queuein
(queptrtp &q,
int x)
intqueueout
(queptrtp &q)
p=q.front-
>next;
q.front-
>next=p-
>next;
if(q.rear==p) q.rear=q.front;
delete p;
}int
printfstack
(sqstacktp s)
while
(p.top!=0)
}int
printfqueue
(queptrtp q)
while
(p!=
null)}
intstopsystem()
//出車
else
if(a==0)
while
(s_ting.data[s_ting.top]
!=x)
//找到要出的車
stackout
(s_ting)
;//出的車出停車棧
while
(s_rang.top!=0)
//把原來到讓行棧的車全入停車棧
if(q_bian.front!=q_bian.rear)
}else
break;}
}//檢查情況
else
if(y==2)
printf
("要進行的操作:1.停車出車,2.檢查三個位置情況\n");
}}intmain()
輸出測試:
此處為了方便,將巨集定義的棧大小改為了3
資料結構 停車場管理
問題描述 設停車場是乙個可停放n輛汽車的狹長通道,且只有乙個大門可供汽車進出。汽車在停車場內按車輛到達時間的先後順序,依次由北向南排列 大門在最南端,最先到達的第一輛車放在車場的最北端 若車場內已停滿n輛汽車,則後來的汽車只能在門外的便道上等待,一旦有車開走,則排在便道上的第一輛車即可開入 當停車場...
資料結構 停車場管理
題目 設停車場內只有乙個可停放n輛汽車的狹長通道,且只有乙個大門可供汽車進出 汽車在停車場內按車輛到達時間的先後順序,依次由北向南排列 大門在最南端,最先到達的第一輛車停放在車場的最北端 若車場內已停滿n輛汽車,則後來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入 當停車...
資料結構 停車場管理
二 概要設計 三 詳細設計 四 除錯分析 五 使用者手冊 六 測試結果 停車場是乙個可停放n輛汽車的狹長通道,且只有乙個大門可供汽車進出。汽車在停車場內按車輛到達時間的先後順序,依次由北向南排列 大門在最南端,最先到達的第一輛車放在車場的最北端 若車場內已停滿n輛汽車,則後來的汽車只能在門外的便道上...