




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、#include <iostream>#include <string>using namespace std;const int MAX_STOP=4; /定義停車場(chǎng)最大停車數(shù)const int MAX_PLATE=10; /定義車牌號(hào)最大長(zhǎng)度/數(shù)據(jù)結(jié)構(gòu)定義/定義存儲(chǔ)汽車信息的結(jié)構(gòu)體typedef structchar license_plateMAX_PLATE;/汽車牌照號(hào)碼,定義為一個(gè)字符指針類型char state; /汽車當(dāng)前狀態(tài),字符p表示停放在停車位上,字符s表示停放在便道上,每輛車的初始狀態(tài)用字符i來(lái)進(jìn)行表示CAR;/定義模擬停車場(chǎng)的棧結(jié)構(gòu)typede
2、f structCAR STOPMAX_STOP; /汽車信息的存儲(chǔ)空間 int top; /用來(lái)指示棧頂位置的靜態(tài)指針SeqStack;/定義模擬便道的隊(duì)列結(jié)構(gòu)typedef struct nodeCAR WAIT; /汽車信息的存儲(chǔ)空問(wèn) struct node *next; /用來(lái)指示隊(duì)列位置的動(dòng)態(tài)指針QNode; /鏈隊(duì)列節(jié)點(diǎn)的類型/定義鏈隊(duì)列的收尾指針typedef structQNode *front,*rear;LQueue; /將頭尾指針?lè)庋b在一起的鏈隊(duì)/函數(shù)聲明int Empty_LQueue(LQueue *q); /判隊(duì)空int LeaveCheck(SeqStack pa
3、rking,char *license_plate); /檢查離開的車是否在停車場(chǎng)中int QueueLength(LQueue *q); /判隊(duì)長(zhǎng)度int Out_LQueue(LQueue *&sidewalk,char *license_plate); /出隊(duì)操作int StackEmpty(SeqStack parking); /判斷棧是否為空int StackFull(SeqStack parking); /判斷棧是否為滿int StackPop(SeqStack &parking); /出棧操作int StackTop(SeqStack parking, char
4、*license_plate); /取棧項(xiàng)元素void Car_come(SeqStack &parking,LQueue *&sidewalk); /有車到來(lái)時(shí)的操作void Car_leave(SeqStack &parking,LQueue *&sidewalk); /有車離開的操作void Display(SeqStack parking); /顯示停車場(chǎng)內(nèi)的所有信息調(diào)試時(shí)用void InitStack(SeqStack &parking); /初始化棧void InitList(LQueue *&sidewalk); /初始化隊(duì)列voi
5、d In_LQueue(LQueue *&sidewalk, char *license_plate); /進(jìn)隊(duì)操作void Input_Check(char *license_plate); /檢驗(yàn)輸入的車牌是否合法void StackPush(SeqStack &parking,char *license_plate); /進(jìn)棧操作void main()/定義變量SeqStack parking;LQueue *sidewalk= NULL;char *choice= new char;int flag=1; /定義一個(gè)變量判斷是否退出/初始化一個(gè)為空的停乍場(chǎng)InitSta
6、ck(parking);/初始化一個(gè)為空的便道InitList(sidewalk);/運(yùn)行界面及功能選擇while(flag)cout<<" 停車場(chǎng)模擬管理系統(tǒng) "<<endl; cout<<"*"<<endl; cout<<"t有車到來(lái)時(shí)請(qǐng)按C鍵"<<endl<<endl; cout<<"t有車要走時(shí)請(qǐng)按l鍵"<<endl<<endl; cout<<"t查看停車場(chǎng)請(qǐng)按D鍵&
7、quot;<<endl<<endl; cout<<"t要退出系統(tǒng)請(qǐng)按Q鍵"<<endl<<endl; cout<<"*"<<endl; cout<<"請(qǐng)選擇操作:"gets(choice);if(1!=strlen(choice)cout<<"請(qǐng)正確輸入選項(xiàng)!"continue;elseswitch(*choice)case 'c':case 'C':Car_come(park
8、ing,sidewalk);break;case'l' :case'L':Car_leave (parking,sidewalk);break;case'q':case 'Q':flag=0;break;case 'd':case 'D':Display(parking);break;default:cout<<"選擇不正確!請(qǐng)重新選擇"<<endl;/有車到來(lái)時(shí)的操作void Car_come(SeqStack &parking, LQueue
9、*&sidewalk)/定義變量char license_plateMAX_PLATE; cout<<"請(qǐng)輸入車輛的車牌號(hào)碼:" Input_Check(license_plate); /判斷停車場(chǎng)是否已滿,滿則進(jìn)入便道,不滿進(jìn)入停車場(chǎng) if(StackFull(parking)In_LQueue(sidewalk,license_plate); /進(jìn)入便道cout<<"停車場(chǎng)已滿清在便道等候,您的位置為"<<QueueLength(sidewalk)<<endl;elseStackPush(par
10、king,license_plate); /進(jìn)入停車場(chǎng)cout<<"請(qǐng)進(jìn)入停車場(chǎng)中的"<<parking.top+1<<"號(hào)停車位"<<endl;/有車離開時(shí)的操作void Car_leave(SeqStack &parking, LQueue *&sidewalk)/定義變量SeqStack tmpparking; /定義臨時(shí)停車場(chǎng)char leave_license_plateMAX_PLATE;/要離開的車牌號(hào)char license_plateMAX_PLATE; /存放從停車場(chǎng)中讀
11、出來(lái)的車牌信息InitStack(tmpparking); /初始化臨時(shí)停車場(chǎng)/判斷停車場(chǎng)中是否有車if(StackEmpty(parking)cout<<"當(dāng)前停車場(chǎng)中沒(méi)有車"<<endl;return; /退出子函數(shù) cout<<"請(qǐng)輸入要離開的車牌照:" Input_Check(leave_license_plate);cout<<"當(dāng)前停車場(chǎng)中有"<<parking.top+1<<"輛車"<<endl;if(LeaveChe
12、ck(parking,leave_license_plate)/判斷車是否在停車場(chǎng)中/車在停車場(chǎng)中cout<<"您的車在 "<<LeaveCheck(parking,leave_license_plate)<<"號(hào)車位上"<<endl;while(StackTop(parking,license_plate)&& (strcmp(parking.STOPparking.top.license_plate, leave_license_plate)!=0)strcpy(parking.STOP
13、parking.top.license_plate, license_plate);cout<<"牌照為"<<license_plate<<"的車暫時(shí)退出停車場(chǎng)"<<parking.top+1<<"號(hào)位"<<endl;StackPush(tmpparking,license_plate); /停車場(chǎng)中的車暫時(shí)退出進(jìn)入臨時(shí)停車場(chǎng)StackPop(parking); /出棧cout<<"牌照為"<<license_plate
14、<<"的車離開停車場(chǎng)"<<parking.top+1<<"號(hào)位"<<endl;StackPop(parking); /出棧/將臨時(shí)停車場(chǎng)巾的車?;赝\噲?chǎng)while(StackEmpty(tmpparking)!=1)StackTop(tmpparking, license_plate);StackPush(parking, license_plate);cout<<"牌照為"<<license_plate<<"的車進(jìn)入停車場(chǎng)"<
15、;<parking.top+1<<"號(hào)位"<<endl;license_plate0='0'StackPop(tmpparking);if(parking.top+1=MAX_STOP-1)/判斷車離開前停車場(chǎng)是否停滿if(QueueLength(sidewalk)/如果停滿則判斷便道上是否有車/便道中有車則從便道中停入停車場(chǎng)Out_LQueue(sidewalk, license_plate); /出隊(duì)StackPush(parking, license_plate);/入棧cout<<"在便道中牌照為&
16、quot;<<license_plate<<"的車進(jìn)入停車場(chǎng)"<<parking.top+1<<"號(hào)"<<endl;else/車不在停車場(chǎng)中cout<<"您的車不在停車場(chǎng)中!"<<endl;/初始化順序棧void InitStack(SeqStack &parking)parking.top= -1;int StackEmpty(SeqStack parking)if(parking.top = -1)return 1;elsereturn 0
17、;/判棧滿int StackFull(SeqStack parking) if(parking.top = MAX_STOP-1) return 1; else return 0;/入棧void StackPush(SeqStack &parking , char *license_plate )parking.top+;strcpy(parking.STOPparking.top.license_plate,license_plate);parking.STOPparking.top.state ='p'/出棧返回棧頂指針int StackPop(SeqStack &
18、amp;parking)if(StackEmpty(parking)return 0;elsereturn parking.top-;int StackTop(SeqStack parking, char *license_plate )if(StackEmpty(parking)return 0;elsestrcpy(license_plate, parking.STOPparking.top.license_plate);return 1;/顯示所有void Display(SeqStack parking)if(parking.top=-1)cout<<"停車場(chǎng)為空
19、"<<endl;elsewhile(parking.top!=-1)cout<<"車牌號(hào)為:"<<parking.STOPparking.top.license_plate;cout<<",停在"<<parking.top+1<<"號(hào)車位上"<<endl;parking.top-;/初始化隊(duì)列void InitList(LQueue *&sidewalk) sidewalk = (LQueue *)malloc(sizeof(LQue
20、ue); sidewalk->front=sidewalk->rear=NULL;/入隊(duì)void In_LQueue(LQueue *&sidewalk,char *license_plate)QNode *car_on_sidewalk;car_on_sidewalk= (QNode *)malloc(sizeof(QNode); /為新節(jié)點(diǎn)開辟新空問(wèn)strcpy(car_on_sidewalk->WAIT.license_plate,license_plate);/將數(shù)據(jù)寫入節(jié)點(diǎn)car_on_sidewalk->WAIT.state= 's'
21、 /寫入停車信息car_on_sidewalk->next= NULL;if(Empty_LQueue(sidewalk) /隊(duì)空則創(chuàng)建第一個(gè)節(jié)點(diǎn)sidewalk->front= sidewalk->rear=car_on_sidewalk;else/隊(duì)非空插入隊(duì)尾sidewalk->rear->next = car_on_sidewalk;sidewalk->rear = car_on_sidewalk;/判隊(duì)空int Empty_LQueue(LQueue *q)if(q->front = NULL)return 1;elsereturn 0;/判
22、隊(duì)長(zhǎng)度返回隊(duì)長(zhǎng)int QueueLength(LQueue *q) QNode *p=q->front; int i=0; while(p!=NULL) i+;p=p->next;return i;/出隊(duì)成功返回l隊(duì)空返回0int Out_LQueue(LQueue *&sidewalk,char *license_plate)QNode *car_on_sidewalk;if(Empty_LQueue(sidewalk) /如果隊(duì)空返回0return 0;car_on_sidewalk= sidewalk->front;strcpy(license_plate,car_on_sidewalk->WAIT.license_plate);/取出隊(duì)頭
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 研究課題的申報(bào)書
- 人才課題申報(bào)書格式要求
- 單位廚房員工合同范本
- 原料協(xié)議合同范本
- 廚房和衛(wèi)生間裝修合同范本
- 中醫(yī)課題立項(xiàng)申報(bào)書范文
- 廠房土地出租合同范例
- 研究現(xiàn)狀課題申報(bào)書范文
- 校級(jí)美術(shù)課題申報(bào)書范文
- 個(gè)人店鋪裝修合同范本
- 大樹移栽合同范本
- 柔性印刷技術(shù)探索-深度研究
- 2025屆新高考政治沖刺備考復(fù)習(xí)把握高考趨勢(shì)+科學(xué)高效命題
- 2024年春季學(xué)期低年級(jí)學(xué)雷鋒講奉獻(xiàn)主題班會(huì)
- 2025年度環(huán)保咨詢與評(píng)估服務(wù)合同范本模板
- 2025至2030年中國(guó)煙用接裝紙數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 文化差異下的教育國(guó)外的小學(xué)音樂(lè)教育方式探討
- 2025年無(wú)錫科技職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2024年黑龍江建筑職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 七年級(jí)語(yǔ)文上冊(cè)課后習(xí)題參考答案
- 第四單元《紙的前世今生》第一課時(shí)(說(shuō)課稿)-2023-2024學(xué)年五年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)粵教版
評(píng)論
0/150
提交評(píng)論