




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上#include <iostream>#include <string>using namespace std;const int MAX_STOP=4; /定義停車(chē)場(chǎng)最大停車(chē)數(shù)const int MAX_PLATE=10; /定義車(chē)牌號(hào)最大長(zhǎng)度/數(shù)據(jù)結(jié)構(gòu)定義/定義存儲(chǔ)汽車(chē)信息的結(jié)構(gòu)體typedef structchar license_plateMAX_PLATE;/汽車(chē)牌照號(hào)碼,定義為一個(gè)字符指針類(lèi)型char state; /汽車(chē)當(dāng)前狀態(tài),字符p表示停放在停車(chē)位上,字符s表示停放在便道上,每輛車(chē)的初始狀態(tài)用字符i來(lái)進(jìn)行表示CAR;/定義模擬
2、停車(chē)場(chǎng)的棧結(jié)構(gòu)typedef structCAR STOPMAX_STOP; /汽車(chē)信息的存儲(chǔ)空間 int top; /用來(lái)指示棧頂位置的靜態(tài)指針SeqStack;/定義模擬便道的隊(duì)列結(jié)構(gòu)typedef struct nodeCAR WAIT; /汽車(chē)信息的存儲(chǔ)空問(wèn) struct node *next; /用來(lái)指示隊(duì)列位置的動(dòng)態(tài)指針QNode; /鏈隊(duì)列節(jié)點(diǎn)的類(lèi)型/定義鏈隊(duì)列的收尾指針typedef structQNode *front,*rear;LQueue; /將頭尾指針?lè)庋b在一起的鏈隊(duì)/函數(shù)聲明int Empty_LQueue(LQueue *q); /判隊(duì)空int LeaveChec
3、k(SeqStack parking,char *license_plate); /檢查離開(kāi)的車(chē)是否在停車(chē)場(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 p
4、arking, char *license_plate); /取棧項(xiàng)元素void Car_come(SeqStack &parking,LQueue *&sidewalk); /有車(chē)到來(lái)時(shí)的操作void Car_leave(SeqStack &parking,LQueue *&sidewalk); /有車(chē)離開(kāi)的操作void Display(SeqStack parking); /顯示停車(chē)場(chǎng)內(nèi)的所有信息調(diào)試時(shí)用void InitStack(SeqStack &parking); /初始化棧void InitList(LQueue *&sidewal
5、k); /初始化隊(duì)列void In_LQueue(LQueue *&sidewalk, char *license_plate); /進(jìn)隊(duì)操作void Input_Check(char *license_plate); /檢驗(yàn)輸入的車(chē)牌是否合法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è)
6、為空的停乍場(chǎng)InitStack(parking);/初始化一個(gè)為空的便道InitList(sidewalk);/運(yùn)行界面及功能選擇while(flag)cout<<" 停車(chē)場(chǎng)模擬管理系統(tǒng) "<<endl; cout<<"*"<<endl; cout<<"t有車(chē)到來(lái)時(shí)請(qǐng)按C鍵"<<endl<<endl; cout<<"t有車(chē)要走時(shí)請(qǐng)按l鍵"<<endl<<endl; cout<<&quo
7、t;t查看停車(chē)場(chǎng)請(qǐng)按D鍵"<<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':
8、Car_come(parking,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;/有車(chē)到來(lái)時(shí)的操作void Car_come(SeqStack &par
9、king, LQueue *&sidewalk)/定義變量char license_plateMAX_PLATE; cout<<"請(qǐng)輸入車(chē)輛的車(chē)牌號(hào)碼:" Input_Check(license_plate); /判斷停車(chē)場(chǎng)是否已滿,滿則進(jìn)入便道,不滿進(jìn)入停車(chē)場(chǎng) if(StackFull(parking)In_LQueue(sidewalk,license_plate); /進(jìn)入便道cout<<"停車(chē)場(chǎng)已滿清在便道等候,您的位置為"<<QueueLength(sidewalk)<<endl;else
10、StackPush(parking,license_plate); /進(jìn)入停車(chē)場(chǎng)cout<<"請(qǐng)進(jìn)入停車(chē)場(chǎng)中的"<<parking.top+1<<"號(hào)停車(chē)位"<<endl;/有車(chē)離開(kāi)時(shí)的操作void Car_leave(SeqStack &parking, LQueue *&sidewalk)/定義變量SeqStack tmpparking; /定義臨時(shí)停車(chē)場(chǎng)char leave_license_plateMAX_PLATE;/要離開(kāi)的車(chē)牌號(hào)char license_plateMAX_PLA
11、TE; /存放從停車(chē)場(chǎng)中讀出來(lái)的車(chē)牌信息InitStack(tmpparking); /初始化臨時(shí)停車(chē)場(chǎng)/判斷停車(chē)場(chǎng)中是否有車(chē)if(StackEmpty(parking)cout<<"當(dāng)前停車(chē)場(chǎng)中沒(méi)有車(chē)"<<endl;return; /退出子函數(shù) cout<<"請(qǐng)輸入要離開(kāi)的車(chē)牌照:" Input_Check(leave_license_plate);cout<<"當(dāng)前停車(chē)場(chǎng)中有"<<parking.top+1<<"輛車(chē)"<<end
12、l;if(LeaveCheck(parking,leave_license_plate)/判斷車(chē)是否在停車(chē)場(chǎng)中/車(chē)在停車(chē)場(chǎng)中cout<<"您的車(chē)在 "<<LeaveCheck(parking,leave_license_plate)<<"號(hào)車(chē)位上"<<endl;while(StackTop(parking,license_plate)&& (strcmp(parking.STOPparking.top.license_plate, leave_license_plate)!=0)strcpy
13、(parking.STOPparking.top.license_plate, license_plate);cout<<"牌照為"<<license_plate<<"的車(chē)暫時(shí)退出停車(chē)場(chǎng)"<<parking.top+1<<"號(hào)位"<<endl;StackPush(tmpparking,license_plate); /停車(chē)場(chǎng)中的車(chē)暫時(shí)退出進(jìn)入臨時(shí)停車(chē)場(chǎng)StackPop(parking); /出棧cout<<"牌照為"<<
14、license_plate<<"的車(chē)離開(kāi)停車(chē)場(chǎng)"<<parking.top+1<<"號(hào)位"<<endl;StackPop(parking); /出棧/將臨時(shí)停車(chē)場(chǎng)巾的車(chē)?;赝\?chē)場(chǎng)while(StackEmpty(tmpparking)!=1)StackTop(tmpparking, license_plate);StackPush(parking, license_plate);cout<<"牌照為"<<license_plate<<"的車(chē)進(jìn)
15、入停車(chē)場(chǎng)"<<parking.top+1<<"號(hào)位"<<endl;license_plate0='0'StackPop(tmpparking);if(parking.top+1=MAX_STOP-1)/判斷車(chē)離開(kāi)前停車(chē)場(chǎng)是否停滿if(QueueLength(sidewalk)/如果停滿則判斷便道上是否有車(chē)/便道中有車(chē)則從便道中停入停車(chē)場(chǎng)Out_LQueue(sidewalk, license_plate); /出隊(duì)StackPush(parking, license_plate);/入棧cout<<&
16、quot;在便道中牌照為"<<license_plate<<"的車(chē)進(jìn)入停車(chē)場(chǎng)"<<parking.top+1<<"號(hào)"<<endl;else/車(chē)不在停車(chē)場(chǎng)中cout<<"您的車(chē)不在停車(chē)場(chǎng)中!"<<endl;/初始化順序棧void InitStack(SeqStack &parking)parking.top= -1;int StackEmpty(SeqStack parking)if(parking.top = -1)return 1
17、;elsereturn 0;/判棧滿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 StackP
18、op(SeqStack &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<&l
19、t;"停車(chē)場(chǎng)為空"<<endl;elsewhile(parking.top!=-1)cout<<"車(chē)牌號(hào)為:"<<parking.STOPparking.top.license_plate;cout<<",停在"<<parking.top+1<<"號(hào)車(chē)位上"<<endl;parking.top-;/初始化隊(duì)列void InitList(LQueue *&sidewalk) sidewalk = (LQueue *)mallo
20、c(sizeof(LQueue); 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)開(kāi)辟新空問(wèn)strcpy(car_on_sidewalk->WAIT.license_plate,license_plate);/將數(shù)據(jù)寫(xiě)入節(jié)點(diǎn)car_on_sidewalk->WAIT.state
21、= 's' /寫(xiě)入停車(chē)信息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;el
22、sereturn 0;/判隊(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ì)頭元素if(s
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 玻璃卸車(chē)施工方案
- 廣場(chǎng)水池石材施工方案
- 磚頭固化地坪施工方案
- 江門(mén)港碼頭施工方案
- 建筑地漏防滲施工方案
- 柴油電噴維修施工方案
- 二零二五年度冷凍食品冷鏈物流保險(xiǎn)合同
- 農(nóng)村水電資源開(kāi)發(fā)與農(nóng)村生態(tài)旅游合作協(xié)議(2025年度)
- 2025年度高新技術(shù)產(chǎn)業(yè)園區(qū)場(chǎng)地?zé)o償使用協(xié)議
- 二零二五年度勞務(wù)安全責(zé)任協(xié)議書(shū)(含安全設(shè)備更新)
- GB/T 7631.5-1989潤(rùn)滑劑和有關(guān)產(chǎn)品(L類(lèi))的分類(lèi)第5部分:M組(金屬加工)
- GB/T 41326-2022六氟丁二烯
- 注塑模具分類(lèi)及結(jié)構(gòu)組成
- GB/T 14002-2008勞動(dòng)定員定額術(shù)語(yǔ)
- 盆腔炎性疾病后遺癥-病因病機(jī)-(中醫(yī))
- 沁園春雪拼音版
- 傳染病防治法培訓(xùn)講義課件
- 法律方法階梯實(shí)用版課件
- KET詞匯表(英文中文完整版)
- 實(shí)驗(yàn) 探究彈簧彈力與形變量的關(guān)系2022-2023學(xué)年高一物理(人教版2019必修第一冊(cè))
- 《三位數(shù)的加減法》單元分析
評(píng)論
0/150
提交評(píng)論