c++數(shù)據(jù)結(jié)構(gòu) 大作業(yè)課程設(shè)計(jì) 】停車場管理】

上傳人:r****d 文檔編號:140981716 上傳時(shí)間:2022-08-23 格式:DOC 頁數(shù):18 大小:46.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
c++數(shù)據(jù)結(jié)構(gòu) 大作業(yè)課程設(shè)計(jì) 】停車場管理】_第1頁
第1頁 / 共18頁
c++數(shù)據(jù)結(jié)構(gòu) 大作業(yè)課程設(shè)計(jì) 】停車場管理】_第2頁
第2頁 / 共18頁
c++數(shù)據(jù)結(jié)構(gòu) 大作業(yè)課程設(shè)計(jì) 】停車場管理】_第3頁
第3頁 / 共18頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《c++數(shù)據(jù)結(jié)構(gòu) 大作業(yè)課程設(shè)計(jì) 】停車場管理】》由會員分享,可在線閱讀,更多相關(guān)《c++數(shù)據(jù)結(jié)構(gòu) 大作業(yè)課程設(shè)計(jì) 】停車場管理】(18頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、C++/數(shù)據(jù)結(jié)構(gòu) 大作業(yè)/課程設(shè)計(jì)——【校園導(dǎo)游咨詢】【停車場管理】娃娃們可以收著以后用 絕對純手工打造 內(nèi)含類模塊/一維指針數(shù)組(謹(jǐn)以此程序供大家參考。運(yùn)行結(jié)果后面有貼圖) 目錄 【1】校園導(dǎo)游咨詢 程序設(shè)計(jì)源代碼 及 截圖 【2】停車場管理——方案一 程序設(shè)計(jì)源代碼 及 截圖 【3】停車場管理——方案二 程序設(shè)計(jì)源代碼 及 截圖 ##############【1】【【校園導(dǎo)游咨詢】】#################### (ps:該校園導(dǎo)游咨詢系統(tǒng)沒有輸入值,所有信息是都在class MGraph的構(gòu)造函數(shù)中傳輸?shù)?,且校園景點(diǎn)信息皆為【【上海電力學(xué)院】】景點(diǎn)信息。請大

2、家注意,直接從文章copy到visual stutio中會出現(xiàn)中文字符,注意刪除,推薦大家在一行語句的分號后面,點(diǎn)出光標(biāo),按一下delete鍵,然后按一下enter鍵,完成visual stutio的自動對齊,這樣程序看起來一目了然,更易于操作和更改) 【問題描述】 設(shè)計(jì)一個(gè)校園導(dǎo)游程序,為來訪的客人提供各種信息查詢服務(wù)。 【基本要求】 (1)設(shè)計(jì)你所在學(xué)校的校園平面圖,所含景點(diǎn)不少于10個(gè)。以圖中頂點(diǎn)表示校內(nèi)各景點(diǎn),存放景點(diǎn)名稱、代號、簡介等信息;以邊表示路徑,存放路徑長度等相關(guān)信息。 (2)為來訪客人提供圖中任意景點(diǎn)相關(guān)信息的查詢。 (3)為來訪客人提供圖中任意景點(diǎn)的問路查詢,

3、即查詢?nèi)我鈨蓚€(gè)景點(diǎn)之間的一個(gè)最短的簡單路徑。 【選作內(nèi)容】 (6)擴(kuò)充每個(gè)景點(diǎn)的鄰接景點(diǎn)的方向等信息,使得路徑查詢結(jié)果能提供詳盡的導(dǎo)向信息。 **************************【以下為類的定義】******************************** #include #include using namespace std; const int MaxSize=18; const int INFINITY=65535;//最大值無窮 class direction; template

4、class MGraph; template class VertexNode//定義頭結(jié)點(diǎn) { friend class MGraph; public: int vex;//頂點(diǎn)名稱 T vexname;//頂點(diǎn)名稱 T vexinf;//頂點(diǎn)信息 direction dir;//存放頂點(diǎn)方位信息的direction類的dir。 }; class direction { public: int ln;//存放在方向圖中的橫坐標(biāo),表示東西 int col;//存放在方向圖中的縱坐標(biāo),表示南北 }; template

5、 T> class MGraph//定義無向圖的鄰接矩陣 { public: MGraph(); //構(gòu)造函數(shù),初始化具有n個(gè)頂點(diǎn)的圖 void printvexname();//顯示所有景點(diǎn)及景點(diǎn)代號 void printvexinf(int i);//顯示代號為i景點(diǎn)的名稱及信息 void printroad(int i,int j);//顯示景點(diǎn)i~j的最短路徑方案信息 void printdir(int i,int j);//顯示景點(diǎn)i到j(luò)的方向信息,如“向東100m,向南200m” VertexNode adjlist[MaxSize]; //存放景點(diǎn)全部

6、信息的 景點(diǎn)類數(shù)組 int vertexNum,arcNum; //圖的頂點(diǎn)數(shù)和邊數(shù) void Root(int p,int q);//遞歸尋找pq間的最短路徑 int Path[MaxSize][MaxSize],Dist[MaxSize][MaxSize];//創(chuàng)建Path和Dist分別存放兩點(diǎn)間最短路徑的前驅(qū)節(jié)點(diǎn),兩點(diǎn)間最短路徑長度 int Line[MaxSize];//Line存放路徑 int kkk;//Line[]數(shù)組的標(biāo)記 private: T vertex[MaxSize]; //存放圖中頂點(diǎn)的數(shù)組 int arc[MaxSize][MaxSize];//存放

7、圖中邊的數(shù)組 }; *************************【以下為類的實(shí)現(xiàn) 即類函數(shù)的定義】*********************************** template MGraph::MGraph()//a[]為景點(diǎn)代號,b[]為景點(diǎn)名稱,c[]為景點(diǎn)信息,d[]為景點(diǎn)方位信息的橫坐標(biāo),e[]為景點(diǎn)方位信息的縱坐標(biāo) //s[]為存放景點(diǎn)鄰接矩陣信息的一維數(shù)組,根據(jù)其對稱性可以用公式賦值給二維數(shù)組arc[][] { int s[]={0, 1,0, 0,2,0, 0,0,2,0, 0,0,2,3,0, 0,0,0,4,2

8、,0, 0,0,0,0,2,3,0, 0,0,0,0,2,3,1,0, 0,0,2,0,2,0,0,2,0, 4,0,2,0,0,0,0,0,1,0, 0,0,0,0,0,0,0,0,0,2,0, 1,0,0,0,0,0,0,0,0,0,2,0, 0,0,0,0,0,0,0,0,0,3,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,2,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0, 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,0, 0,0,0,0,0

9、,0,0,0,0,0,0,0,4,4,0,0,2,0}; int a[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}; char* b[]={"南門","實(shí)驗(yàn)樓","南圖","大活","睿思樓","大禮堂", "南4教","知行樓","國交樓","南3教","南2教","南1教", "北圖","北3教","北4教","北2教","北1教","北門"}; char* c[]={"南校區(qū)正門","物理實(shí)驗(yàn)樓","南校區(qū)圖書館","大學(xué)生活動中心", "教師辦公樓、醫(yī)務(wù)室及留學(xué)生公寓","大禮堂,用于舉辦各種文藝演出","南校區(qū)第4教學(xué)樓"

10、,"實(shí)習(xí)基地,計(jì)算機(jī)房等", "國際交流中心,教職工餐廳","南校區(qū)第3教學(xué)樓","南校區(qū)第2教學(xué)樓","南校區(qū)第1教學(xué)樓", "北校區(qū)圖書館","北校區(qū)第3教學(xué)樓","北校區(qū)第4教學(xué)樓","北校區(qū)第2教學(xué)樓", "北校區(qū)第1教學(xué)樓","北校區(qū)正門"}; int d[]={8,6,4,4,1,0,0,1,3,4,6,8,4,3,2,3,5,8}; int e[]={8,8,8,10,8,10,7,6,6,6,6,6,3,1,0,0,0,2}; int i,j; vertexNum=18; arcNum=30; for(i=0;i

11、list[i].vex=a[i]; adjlist[i].vexname=b[i]; adjlist[i].vexinf=c[i]; adjlist[i].dir.ln=d[i]; adjlist[i].dir.col=e[i]; } for (i=0; i void MGraph<

12、T>::printvexname() { int i; for(i=0;i void MGraph::printvexinf(int i) { cout< void MGraph::printdir(int i,int j)

13、 { int dx,nb;//臨時(shí)存放i與j之間的南北東西關(guān)系 j在i的哪邊?? dx=adjlist[j].dir.col-adjlist[i].dir.col; nb=adjlist[j].dir.ln-adjlist[i].dir.ln; if(dx>0)//即j在i的東邊 cout<<"向東"<0)//即j在i的南邊 cout<<"向南"<

14、te void MGraph::Root(int p,int q) { if (Path[p][q]>0) { Root(p,Path[p][q]); Root(Path[p][q],q); } else { Line[kkk]=q; kkk++; } } template void MGraph::printroad(int i,int j) { int p,q,m,k,item1,item2; for(p=0;p

15、um;q++) Dist[p][q]=arc[p][q];//鄰接矩陣賦值 for(k=0;k0) for(q=0;q0) if (((Dist[p][q]>Dist[p][k]+Dist[k][q])||(Dist[p][q]==0))&&(p!=q)) { Dist[p][q]=Dist[p][k]+Dist[k][q]; Path[p][q]=k; } cout<<"\n==

16、===================================================\n"; cout<<"從"<"; printdir(i,item2); cout<<"-->"<

17、ne[m]; cout<<"-->"; printdir(item1-1,item1); cout<<"-->"<

18、"=============================================================="<

19、ut<<"請輸入要選擇的功能號:"; cin>>choice; return choice; } void main() { MGraph mg; int funcchoice(); int fc; while(1) { fc=funcchoice(); if(fc==1) { int i; for(i=0;i

20、>>i; mg.printvexinf(i); } else if(fc==3) { int i,j; mg.printvexname(); cout<<"請輸入兩景點(diǎn)代號(我們將把最短路線反饋予您):"; cin>>i>>j; mg.printroad(i,j); } else if(fc==4) break; else cout<<"輸入有誤,請重新輸入!"<

21、駛離操作時(shí)程序內(nèi)部有錯(cuò)誤數(shù)據(jù),雖然做了函數(shù)完成這一功能,但因時(shí)間有限,沒能及時(shí)查找更正,現(xiàn)在懶得改了。。。大家將就看吧。不過運(yùn)行是可以的) 【問題描述】 設(shè)停車場是一個(gè)可停放n輛汽車的 長通道,且只有一個(gè)大門可供汽車進(jìn)出。汽車在停車場內(nèi)按車輛到達(dá)時(shí)間的先后順序,依次由北向南排列(大門在最南端,最先到達(dá)的第一輛車信放在車場的最北端),若車場內(nèi)已停滿n輛汽車,則后來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當(dāng)停車場內(nèi)某輛車要離開時(shí),在它之后進(jìn)入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其他車輛再按原次序進(jìn)入車場院,每輛停放在車場的車在它離開停車場時(shí)必須

22、按它停留的時(shí)間長短交納費(fèi)用。試為停車場編制按上述要求進(jìn)行管理的模擬程序。 【基本要求】 以棧模擬停車場,以隊(duì)列模擬車場外的便道,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理。每一組輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車“到達(dá)”或“離去”信息、汽車牌照號碼以及到達(dá)或離去的時(shí)刻。對每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出信息為:若是車輛到達(dá),則輸出汽車在停車場內(nèi)或便道上的停車位置;若是車輛離去,則輸出汽車在停車場內(nèi)停留的時(shí)間和應(yīng)交納的費(fèi)用(在便道上停留的時(shí)間不收費(fèi))。棧以順序結(jié)構(gòu)實(shí)現(xiàn),隊(duì)列以鏈表結(jié)構(gòu)實(shí)現(xiàn)。 【測試數(shù)據(jù)】 設(shè)n=2,輸入數(shù)據(jù)為:(A,1,5),(A,2,15),(A,3,20),(A,4,25),(

23、A,5,30),(D,2,35),(D,4,40),(E,0,0)。其中:A表示到達(dá)(Arrival);D表示離去(Departure);E表示輸入結(jié)束(End)。 **************************【以下為類的定義】************************************* #include using namespace std; const int Max=2;//車庫最大容量 const double price=30;//每小時(shí)的費(fèi)用 //思想:(報(bào)告第四頁) //我的系統(tǒng)界面,輸入信息為:(到達(dá)/離開/退出);車牌

24、號;時(shí)刻 //因此,我的停車場類分成車輛到達(dá)和車輛離開兩個(gè)主要的函數(shù)實(shí)現(xiàn)。 //車輛到達(dá),有入棧和入隊(duì)。車輛離開有出棧,出隊(duì)和入棧操作。 //因此我又編寫入棧的類,隊(duì)的類。與parkingmanagement進(jìn)行友元。 //**************************************類定義*********************************************** class car//車的信息類 { public: double time;//計(jì)費(fèi)時(shí)間 int number;//車牌號 car *next;//存放car類型元素的數(shù)組初始

25、地址 }; class carstack//棧(停車場)的類 { friend class parkingmanagement;//parkingmanagement能訪問carstack類中所有成員 public: carstack();//構(gòu)造函數(shù),棧的初始化 int empty();//判斷棧是否為空 int full();//判斷棧是否為滿 car *s;//存放car類型棧元素的數(shù)組初始地址 int top;//棧頂指針 }; class carqueue//隊(duì)列(便道)的類 { friend class parkingmanagement;//parki

26、ngmanagement能訪問carstack類中所有成員 public: carqueue();//構(gòu)造函數(shù),隊(duì)列的初始化 int full();//判斷隊(duì)列是否為滿 car *front,*rear;//存放car類型隊(duì)列元素的數(shù)組初始地址 }; class parkingmanagement { public: int pushstack(carstack &cs,int cnum,double ctime);//入棧,cs棧內(nèi)進(jìn)行調(diào)整,返回棧內(nèi)位置 void popstack(carstack &cs,int cnum);//出棧,cs棧內(nèi)進(jìn)行調(diào)整, //根據(jù)車牌

27、號把車彈出棧,將出棧car的number賦值給int popstacknumber() //將出棧car的time賦值給double popstacktime(),無返回值! int pushqueue(carqueue &cq,int cnum,double ctime);//入隊(duì),隊(duì)內(nèi)進(jìn)行調(diào)整,返回隊(duì)內(nèi)位置 int popqueue(carqueue &cq);//出隊(duì),隊(duì)內(nèi)進(jìn)行調(diào)整,返回汽車車牌號 void arrival(carstack &cs,carqueue &cq,int cnum,double ctime);//車輛到達(dá), //根據(jù)輸入的車牌號、到達(dá)時(shí)間,變更函數(shù)參

28、數(shù);并cout車位信息 void leave(carstack &cs,carqueue &cq,int cnum,double ctime);//車輛離開, //根據(jù)輸入的車牌號找到汽車,并進(jìn)行出棧操作、出隊(duì)操作和入棧操作; //并cout停留時(shí)間和收費(fèi)情況 void deletequeue(carqueue &cq,int i);//刪除cq過道中第i輛車 int popstacknumber;//專門存放出棧的時(shí)候返回的車牌號 double popstacktime;//專門存放出棧的時(shí)候返回的時(shí)刻 }; *******************************

29、***【以下為類的實(shí)現(xiàn)】************************************ carstack::carstack()//構(gòu)造函數(shù),棧的初始化 { top=-1; s=new car[Max];//創(chuàng)建car類型棧元素的數(shù)組 if(s==NULL) { cout<<"??臻g分配不成功!"<

30、 int parkingmanagement::pushstack(carstack &cs,int cnum,double ctime)//入棧,cs棧內(nèi)進(jìn)行調(diào)整,返回棧內(nèi)位置 { if(cs.top==Max-1)//Max從1開始,top從0開始 { cout<<"停車場已滿!"<

31、棧時(shí)間,s是car類型棧元素的數(shù)組 return (cs.top+1);//返回棧內(nèi)位置加1,即停車場內(nèi)車位從1號開始 } } void parkingmanagement::popstack(carstack &cs,int cnum)//出棧,cs棧內(nèi)進(jìn)行調(diào)整, //根據(jù)車牌號把車彈出棧,將出棧car的number賦值給int popstacknumber //將出棧car的time賦值給double popstacktime,無返回值! { int i; car p; carstack stemp;//定義一個(gè)carstack類型的臨時(shí)存放出棧元素的棧 for(i=

32、0; i<=cs.top; i++) if((cs.s[i]).number==cnum) break;//當(dāng)要出棧的車的車牌號=棧內(nèi)的車牌號元素時(shí),跳出循環(huán) p=cs.s[i];//將要出棧的元素賦給car類型的p存放 while(cs.top>i) stemp.s[++(stemp.top)]=cs.s[(cs.top)--];//出棧的元素?cái)?shù)組逐個(gè)賦給臨時(shí)棧 popstacknumber=p.number;//將這個(gè)車牌號信息傳給int popstacknumber() popstacktime=p.time;//將該車的時(shí)間信息傳給double popstacktime()

33、 cs.top--;//棧頂指針回到原來位置 while(stemp.top>=0) cs.s[++(cs.top)]=stemp.s[(stemp.top)--];//臨時(shí)棧出棧的元素逐個(gè)賦給原棧,完成先退再進(jìn)的工作 } int parkingmanagement::pushqueue(carqueue &cq,int cnum,double ctime)//入隊(duì),隊(duì)內(nèi)進(jìn)行調(diào)整,返回隊(duì)內(nèi)位置 { car *p,*countp; int count(1);//count用于記錄車在過道上的位置信息,因隊(duì)列為鏈?zhǔn)降?,所以進(jìn)行循環(huán)累加 p=new car;//創(chuàng)建一個(gè)car類型的

34、指針 p->number=cnum; p->time=ctime; p->next=NULL;//首先將指向存放car類型元素的數(shù)組初始地址置空 if (cq.front==NULL)//第一次入隊(duì)要判斷頭結(jié)點(diǎn)是否為空 { cq.front=cq.rear=p; } else {//尾插法插入元素 p->next=(cq.rear)->next; (cq.rear)->next=p; cq.rear=(cq.rear)->next; } countp=(cq.front)->next; while(countp!=NULL) { count++; coun

35、tp=countp->next; }//count即車在過道上的位置,【從1開始計(jì)?。。 ? return count; } int parkingmanagement::popqueue(carqueue &cq)//出隊(duì),隊(duì)內(nèi)進(jìn)行調(diào)整,返回汽車車牌號 { car p; p.number=((cq.front)->next)->number;//cq隊(duì)里,從cq.front開始指向下一個(gè)元素的車牌號賦給car類型的車信息 p.time=((cq.front)->next)->time;//cq隊(duì)里,從cq.front開始指向下一個(gè)元素的時(shí)刻 //賦給car類型的車信息 p.

36、next=((cq.front)->next)->next;//cq隊(duì)里,從cq.front開始指向下一個(gè)元素的指針 //賦給car類型的車信息的下一個(gè)元素的指針 return p.number; cq.front=(cq.front)->next; } void parkingmanagement::arrival(carstack &cs,carqueue &cq,int cnum,double ctime) //車輛到達(dá),根據(jù)輸入的車牌號、到達(dá)時(shí)間,變更函數(shù)參數(shù);并cout車位信息 { int pos; if(!(cs.full()))//如果棧未滿,車輛停入停車場

37、{ int fl(0),i;//定義一個(gè)從0開始的標(biāo)記fl for(i=0;i<=cs.top;i++) { if(cs.s[i].number==cnum)//如果到達(dá)的車的車牌號=棧內(nèi)已有車輛的車牌號 { fl=1;//fl記1 break; } } if(fl==1)//如果到達(dá)的車的車牌號!=棧內(nèi)已有車輛的車牌號 cout<<"輸入錯(cuò)誤!請重新輸入!"<

38、<

39、unt(1),outcarnum; double hour; car *p; for(i=0;i<=cs.top;i++) if((cs.s[i]).number==cnum) { flag=1; break; } if(flag)//如果輸入的車牌號與棧內(nèi)已有車輛的車牌號一致 { popstack(cs,cnum);//出棧操作 hour=ctime-popstacktime;//時(shí)間計(jì)算 outcarnum=popqueue(cq);//將便道上的第一輛車出隊(duì),入棧。并將其車牌號賦給outcarnum pstack=pushstack(cs,outcarnum,

40、ctime);//將便道上的第一輛車,入棧 cout<<"該車在本停車場內(nèi)停留時(shí)間為"<next; if(p->number==cnum)//在過道中找到要出去的車,則在隊(duì)列中刪除該car。 //后面的車輛依然順序排列,補(bǔ)足空位 { de

41、letequeue(cq,count); if(count>Max) { cout<<"您的車在便道上的位置為"<next;

42、 j++; }//找到第i個(gè)節(jié)點(diǎn)(i從1開始) if(!p || !p->next) cout<<"i不合法"; else { q=p->next; p->next=q->next; delete q; } } *******************************【以下是主程序】************************************ void print() { cout<<"= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ="<

43、t<<"= 歡迎光臨! ="<

44、調(diào)試程序******設(shè)n=2,輸入數(shù)據(jù)為:(A,1,5),(A,2,15),********************************* //*********************(A,3,20),(A,4,25),(A,5,30),*********************************** //*********************(D,2,35),(D,4,40),(E,0,0)。************************************ //*********************其中:A表示到達(dá)(Arrival);D表示離去(Depart

45、ure);E表示輸入結(jié)束(End)。*** void main() { char acc; int carnum; double cartime; parkingmanagement park; carstack cars; carqueue carq; while(1) { print(); cin>>acc>>carnum>>cartime; if(acc=='A') park.arrival(cars,carq,carnum,cartime); else if(acc=='D') park.leave(cars,carq,carnum,cartime);

46、 else if(acc=='E') break; else cout<<"您的輸入有誤,請重新輸入!"< using namespa

47、ce std; const int MaxSize=2;//停車場內(nèi)最多能停2輛車 template class carStack;// template //定義模板類 struct Node//過道停車的隊(duì)列所需鏈?zhǔn)浇Y(jié)點(diǎn) { T carnum;//定義車牌號類型 Node *next; //此處也可以省略 }; template class carinfo { friend class carStack; public: T carnum; //車號 int cartime;//停車時(shí)間

48、 }; template class carQueue { friend class carStack; public: carQueue(); //構(gòu)造函數(shù),初始化一個(gè)空的鏈隊(duì)列 int EnQueue(T cnum); //將元素x入隊(duì),并返回其在隊(duì)內(nèi)的位置(從1開始) T DeQueue(); //將隊(duì)頭鏈?zhǔn)浇Y(jié)點(diǎn)出隊(duì),并返回汽車車牌號 void deletequeue(int i);//將隊(duì)內(nèi)低i個(gè)元素刪除,即便道上i位置的汽車駛離 bool Empty(); //判斷鏈隊(duì)列是否為空 Node *front, *rear; };

49、 template class carStack { friend class carinfo; public: carStack() ; //構(gòu)造函數(shù),棧的初始化,停車場容量為【size】 void Pushcar(T cnum,int ctime); //有車停入停車場 int Popcar(T outcnum,int outctime); //將第cnum輛車出棧,并返回其停車時(shí)間(hour) bool full();//判斷棧是否為滿?滿則返回1 carinfo *S;//?? int top; }; *****************

50、*************【以下為類的實(shí)現(xiàn)】**************************************** template //初始化隊(duì)列 carQueue::carQueue() { front=rear=NULL; } template int carQueue::EnQueue(T cnum)//車子進(jìn)入便道 { int i(0); Node *s,*p;//?? s=new Node; s->carnum=cnum; s->next=NULL; if(front==NULL)/

51、/空隊(duì)列,【【【新結(jié)點(diǎn)既是隊(duì)頭,又是隊(duì)尾】】】關(guān)鍵是!front指向第一個(gè)結(jié)點(diǎn) { front=rear=s; } else { rear->next=s;//將結(jié)點(diǎn)s插入到隊(duì)尾 rear=s; } p=front; while(p!=NULL) { i++; p=p->next; }//i即車在過道上的位置,【從1開始計(jì)!??!】 return i; } template T carQueue::DeQueue() { Node *p; if (front==NULL) cout<<"便道上沒車"; els

52、e { p=front; front=front->next;//將隊(duì)頭元素所在結(jié)點(diǎn)摘鏈 } return p->carnum; delete p;//將出隊(duì)進(jìn)棧的車從隊(duì)列里刪除 } template bool carQueue::Empty()//判斷是否為空,為空則返回1,不為空則返回0 { return front==NULL; } template carStack::carStack()//構(gòu)造棧算法 :top(-1) {//建立一個(gè)最大尺寸為size的空棧 S=new carinfo

53、[MaxSize];//創(chuàng)建存儲棧的數(shù)組 if(S==NULL) //分配不成功 { cerr<<"動態(tài)存儲失敗!"< void carStack::Pushcar(T cnum,int ctime) { if (top==MaxSize-1) cout<<"車場內(nèi)已停滿汽車"; else { S[++top].carnum=cnum; S[top].cartime=ctime; } } template int carStack<

54、T>::Popcar(T outcnum,int outctime) { int i,hour; carStack Stemp;//建一個(gè)臨時(shí)模擬停車場 int Stop=-1; for(i=0;i<=top;i++) if(outcnum==S[i].carnum) break; while(top>i) Stemp.S[++Stop]=S[top--]; hour=outctime-S[top].cartime; return hour; top--; while(Stop>=0) S[++top]=Stemp.S[Stop--]; } template

55、lass T> bool carStack::full() { return top==MaxSize-1; } template void carQueue::deletequeue(int i) { Node *p,*q; int j(1); p=front; while(p && jnext; j++; }//找到第i-1個(gè)結(jié)點(diǎn)(結(jié)點(diǎn)位置從1開始) if(!p||!p->next) cout<<"i不合法!"<next; p->next=q->n

56、ext; delete q; } } ******************************【以下為主函數(shù)】*************************************** void outputpark()//系統(tǒng)功能選擇頁面,輸入泊車信息 { cout<<"======================================================================"<

57、dl; cout<<"======================================================================"< cs; carQueue cq; while(1) { outputpark(); cin>>a

58、rrive>>carnum>>cartime; if(arrive=='A') { if(cs.top!=MaxSize-1)//停車場內(nèi)有空位可以駛?cè)? { cs.Pushcar(carnum,cartime); cout<<"請駛?cè)胪\噲龅?<

59、(cs.S[i].carnum==carnum) { flag=1; break; } if(flag) { int hour; hour=cs.Popcar(carnum,cartime); cout<<"您的"<

60、錄該車便道內(nèi)的位置 Node *p; p=cq.front; while(p!=NULL) { if(p->carnum==carnum) { flagde=1; break; } pos++; p=p->next; } if(flagde) { cout<<"您的車停在便道上"<

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!