資料結構 c 實現簡單的停車場

2021-10-14 13:19:05 字數 2783 閱讀 4066

設停車廠只有乙個可停放幾輛汽車的狹長通道,且只有乙個大門可供汽車進出。汽車在停車場內按車輛到達的先後順序依次排列,若車場內已停滿幾輛汽車,則後來的汽車只能在門外的便道上等候,一旦停車場內有車開走,則排在便道上的第一輛車即可進入;當停車場內某輛車要離開時,由於停車場是狹長的通道,在它之後開入的車輛必須先退出車場為它讓路,待該輛車開出大門後,為它讓路的車輛再按原次序進入車場。在這裡假設汽車不能從便道上開走。

以棧模擬停車場,以佇列模擬車場外的便道,按照從終端輸入資料序列進行模擬管理。每一組輸入資料報括三個資料項:汽車「到達」或「離去」資訊、汽車牌照號碼以及到達或離去的時刻。對每一組輸入資料進行操作後的輸出資訊為:若是車輛到達,則輸出車輛在停車場內或便道上的停車位置;若是車輛離去,則輸出車輛在停車場內停留的時間和應繳納的費用(在便道上停留的時間不收費)。棧以順序結構出現,佇列以鍊錶結構實現。

(1)連續有7輛車到來,牌照號分別為jf001、jf002、jf003、jf004、、jf005、jf006、jf007,前5輛車應該進入停車位1-5車位,第6、7輛車應停入便道的1、2位置上。

(2)(1)中的情況發生後,讓牌照號為jf003的汽車從停車廠開走,應顯示jf005、jf004的讓路動作和jf006從便道到停車位上的動作。

(3)隨時檢查停車位和便道的狀態,不應該出現停車位有空位而便道上還有車的情況。

(4)程式容錯性的測試,當按鍵輸入錯誤的時候是否有錯誤提示給使用者指導使用者正確操作,並作出相應處理保證程式健康的執行。

#include

#include

using

namespace std;

#define maxsize 5

#define price 0.05

//方便更改**

int k =1;

//資訊

typedef

struct

inf;

//棧typedef

struct

seqstack,

* linkstack;

//佇列

typedef

struct node

qnode;

typedef

struct

lqueue;

//初始化佇列

lqueue*

init_lqueue()

//入隊

void

enterline

(lqueue* q,

int hour ,

int min,string name)

//判斷佇列是否為空

intemptylque

(lqueue* q)

//出隊

qnode*

outline

(lqueue* q)

else

q->front-

>next = p-

>next;

p->next =

null

;return p;

}//查詢便道資訊

void

checkline

(lqueue* q)}}

//初始化棧

linkstack init_seqstack()

//判斷棧是否為空

intfullstack

(linkstack q)

//入棧

void

enterpark

(linkstack &p,

int hour,

int min, string name)

// 計算停車費

intsumprice

(int inhour,

int inmin,

int outhour,

int outmin)

//出棧

void

outpark

(linkstack p,lqueue *l,string name,

int hour,

int min)

//出棧的原理是,依次對比棧內的車牌號,若不是輸入的車牌號,則直接進入臨時棧內,直到找到車輛後出棧,臨時棧內的車再依次入棧,佇列中的車再入棧。

while

(p->data[p-

>top]

.name == name)if(

emptylque

(l)==1)

}}//查詢停車場資訊

void

checkpark

(linkstack &s)

if(s-

>top == maxsize -1)

else

s->top = i;

}int

main()

else

break;}

case

'2':

case

'3':

checkpark

(l);

break

;case

'4':

checkline

(l);

break

;case

'5':

return0;

default

: cout <<

"輸入錯誤,請重新輸入1—5:"

<< endl;

break;}

}}

程式中有乙個小紕漏,即認定出停車場時輸入的車牌號在停車場中。應該加乙個判定,若輸入的車牌號沒有在停車場裡應該怎麼處理。

加乙個判斷即可,若沒有找到對應車牌號的車輛時,輸出報錯資訊。

實習 C 實現資料結構停車場

停車場的標頭檔案 1 停車場需要設計的各種資料結構類,包括順序棧,鏈式佇列,車輛資訊 2 其中兩個資料結構因為常用,所以設計為模板,包含了初始化,增加資料,刪除資料的函式,可以直接套用其他資料型別 pragma once define maxsize 2 template typename t cl...

資料結構 停車場管理

問題描述 設停車場是乙個可停放n輛汽車的狹長通道,且只有乙個大門可供汽車進出。汽車在停車場內按車輛到達時間的先後順序,依次由北向南排列 大門在最南端,最先到達的第一輛車放在車場的最北端 若車場內已停滿n輛汽車,則後來的汽車只能在門外的便道上等待,一旦有車開走,則排在便道上的第一輛車即可開入 當停車場...

資料結構 停車場管理

題目 設停車場內只有乙個可停放n輛汽車的狹長通道,且只有乙個大門可供汽車進出 汽車在停車場內按車輛到達時間的先後順序,依次由北向南排列 大門在最南端,最先到達的第一輛車停放在車場的最北端 若車場內已停滿n輛汽車,則後來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入 當停車...