2023年數(shù)據(jù)結(jié)構(gòu)停車場(chǎng)管理實(shí)驗(yàn)報(bào)告C++_第1頁
2023年數(shù)據(jù)結(jié)構(gòu)停車場(chǎng)管理實(shí)驗(yàn)報(bào)告C++_第2頁
2023年數(shù)據(jù)結(jié)構(gòu)停車場(chǎng)管理實(shí)驗(yàn)報(bào)告C++_第3頁
2023年數(shù)據(jù)結(jié)構(gòu)停車場(chǎng)管理實(shí)驗(yàn)報(bào)告C++_第4頁
2023年數(shù)據(jù)結(jié)構(gòu)停車場(chǎng)管理實(shí)驗(yàn)報(bào)告C++_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)題目停車場(chǎng)管理器設(shè)計(jì)專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)題目停車場(chǎng)管理器設(shè)計(jì)班級(jí):1401姓名:彭旭學(xué)號(hào):#includeHstopl.hntypedefstructElemType{?chara[3];intnum;inttime;JElemType;typedefstruetSqStack{oElemType*base;。ElemType*top;Antstacksize;}SqStack;//棧的表達(dá)typedefstructQNode{ElemTypedata;structQNode*next;}QNode,*QueuePtr;//隊(duì)列的表達(dá)typedefstructLinkQueue{oQueuePtrfront;〃隊(duì)頭指針QueuePtrrear;〃隊(duì)尾指針}LinkQueue;StatusInitStack(SqStack&S);//構(gòu)造空棧StatusPush(SqStack&S,E1emTypee);//進(jìn)棧StatusPop(SqStack&S,E1emType&e);〃出棧StatusInitQueue(LinkQueue&Q);〃構(gòu)造一個(gè)空隊(duì)列StatusEnQueue(LinkQueue&Q,E1emTypee);〃入隊(duì)StatusDeQueue(LinkQueue&Q,ElemType&e);//出隊(duì)Stop.cpp:#includenstop2.h”StatusInitStack(SqStack&S){〃構(gòu)造空棧S.base=(E1emType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));if(!S.base)exit(0VERFLOW);S.top=S.base;S.stacksize=STACK_INIT_SIZE;returnOK;)StatusPush(SqStack&S,ElemTypee){//插入元素e為新的棧頂元素if(S.top-S.base>=S.stacksize){//棧滿,追加存儲(chǔ)空間S.base=(ElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemType));if(!S.base)exit(OVERFLOW);S.top=S.base+S.stacksize;S.stacksize+=STACK_INIT_SIZE;)o*S.top++=e;returnOK;}StatusPop(SqStack&S,ElemType&e){〃出棧if(S.top==S.base)returnOK;e=*一S.top;return0K;**********************************************************************隊(duì)歹U*/StatusInitQueue(LinkQueue&Q){//構(gòu)造一個(gè)空隊(duì)列Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));oif(JQ.front)exit(OVERFLOW);oQ.front—>next=NULL;^returnOK;)StatusEnQueue(LinkQueue&Q,ElemTypee){〃插入元素e為Q的新隊(duì)列structQNode*p;叩二(QueuePtr)malloc(sizeof(QNode));“f(!p)exit(OVERFLOW);p->data=e;p->next=NULL;Q.rear->next=p;Q.rear=p;。returnOK;)StatusDeQueue(LinkQueue&Q,ElemType&e){ostructQNode*p;“f(Q.front=Q.rear)returnERROR;叩二Q.front—>next=p->next;?if(Q.rear==p)Q.rear=Q.front;free(p);returnOK;Stop_main.cpp:#includenstop2.hnmain(){inti,t,f,m,n,sl_num,Q_num;^structSqStacksl,s2;ostructLinkQueueQ;structElemTypee,el;sl_num=0;Q_num=0;t=0;m=0;4nitStack(sl);InitStack(s2);InitQueue(Q);叩rintf(”停車場(chǎng)的容量是:”);oscanf("%d",&n);。printf(n輸入車輛信息(E為退出,A為進(jìn)入標(biāo)志,D為離開標(biāo)志,車牌號(hào)時(shí)間空格隔開):\nM);scanf("%s”,e1.a);scanf("%d%d”,&e1.num,&e1.time);owhile(strcmp(el.a,nEn)!=0){“f(strcmp(el.a/,An)==0){//當(dāng)有車輛進(jìn)來的時(shí)候gif(sl_num<n){Push(s1,el);s1_num++;bprintf("此車停在停車場(chǎng)第%(1輛\rT,s1_num);)。e1se{EnQueue(Q,e1);Q—num++;aprintf(n此車停在便道距離門口第%d輛\n”,Q_num);}°)elseif(strcmp(el.a,nDH)==0){//當(dāng)有車輛離開的時(shí)候f=sl_num;。for(i=0;i<f;i++){8。Pop(sLe);s1_num—;if(el.num==e.num){o。^>t=el.time-e.time;m=MONEYS;33oprintf("此車停車時(shí)間%d,所需費(fèi)用%d元3”,t,m);break;}。。elsePush(s2,e);)aif(t==0&&m==0){printf("此車為便道內(nèi)車,故無需收費(fèi)\n");Q_num-;}。while(s2.top!=s2上ase){。Pop(s2,e);Push(sl,e);sl—num++;}的if(Q.front!=Q.rear){DeQueue(Q,e);Push(sl,e);s1_num++;}000}3elseprintf("錯(cuò)誤\n");printf("輸入數(shù)據(jù)\n");scanf("%s",e1.a);scanf(H%d%dH,&el.num,&el.time);}可L:激據(jù)結(jié)構(gòu)程序\停車場(chǎng)管理'停車場(chǎng)管理.exe停車場(chǎng)的容量是:2輸入奉輛信意(E為退出,A為進(jìn)入標(biāo)志,D為離開標(biāo)志,車牌號(hào)時(shí)間空格隔開)A12及專輯建停車場(chǎng)第廓制人數(shù)據(jù)A23席臚場(chǎng)第2輛D120此車停車時(shí)間18,所需費(fèi)用54元輸入數(shù)據(jù)A36翳臚場(chǎng)第2輛A49些車侵走便道距離門口第1輛輸入數(shù)據(jù)Processexitedafter63.54secondswithreturnualue0請(qǐng)按任意鍵繼續(xù)?.?運(yùn)營結(jié)果實(shí)驗(yàn)重要內(nèi)容以棧模擬停車場(chǎng),以隊(duì)列模擬車場(chǎng)外的便道,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理。每一組輸入數(shù)據(jù)涉及三個(gè)數(shù)據(jù)項(xiàng):汽車“達(dá)成”或“拜別”信息、汽車牌照號(hào)碼以及達(dá)成或拜別的時(shí)刻。對(duì)每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出信息為:若是車輛達(dá)成、則輸出汽車在停車場(chǎng)內(nèi)或便道上停車位置;若是車輛拜別,則輸出汽車在停車場(chǎng)內(nèi)停留的時(shí)間和應(yīng)交納的費(fèi)用(在便道上停留的時(shí)間不收費(fèi))。棧以順序結(jié)構(gòu)實(shí)現(xiàn),隊(duì)列以鏈表結(jié)構(gòu)實(shí)現(xiàn)。環(huán)境Windows10Visua1c++c語言實(shí)驗(yàn)原理1.概要設(shè)計(jì)(1)抽象數(shù)據(jù)類型定義ADTStack{數(shù)據(jù)對(duì)象:D=(ai|ai^ElemSet,i=l,2,…n;n>0}數(shù)據(jù)關(guān)系:R1={<ai-l,ai>|ai-l,aiGD,i=2,…n}基本操作:InitStack(&S)操作結(jié)果:構(gòu)造一個(gè)空棧S。Push(&S,e)初始條件:棧S已存在。操作結(jié)果:插入e為新的棧頂元素Pop(&S,&e)初始條件:棧S已存在。操作結(jié)果:刪除S的棧頂元素,并且用e返回。}ADTStackADTQueue{數(shù)據(jù)對(duì)象:D={ai|aiElemSet,i=l,2n;n>0}數(shù)據(jù)關(guān)系:R1={<ai-1,ai>|ai-1,ai£D,i=2,…n}其中:al為隊(duì)頭,an為隊(duì)尾基本操作:InitQueue(&Q);操作結(jié)果:構(gòu)造一個(gè)空隊(duì)列QEnQueue(&Q,&e);初始條件:對(duì)列Q已存在。操作結(jié)果:插入元素e為Q的新隊(duì)尾元素。DeQueue(&Q,&e);初始條件:對(duì)列Q已存在。操作結(jié)果:刪除Q的隊(duì)頭元素,并用e返回。}ADTQueue(2)本程序包含七個(gè)模塊:〈1〉主程序模塊,其中主函數(shù)為Voidmain(){初始化;構(gòu)造空棧;輸入已知數(shù)據(jù);插入數(shù)據(jù)入棧;分析{入棧;出棧;入隊(duì);出隊(duì);}輸出數(shù)據(jù);}<2>構(gòu)造棧模塊構(gòu)造一個(gè)空棧;棧插入模塊插入新的數(shù)據(jù)元素;棧刪除模塊刪除指定的數(shù)據(jù)元素;構(gòu)造隊(duì)列模塊構(gòu)造一個(gè)空隊(duì)列;隊(duì)列插入模塊插入新的數(shù)據(jù)元素;隊(duì)列刪除模塊刪除指定的數(shù)據(jù)元素;(3)各模塊之間的調(diào)用關(guān)系圖解:.主函整模塊,.分析(一一、,一一、,一-、,_一、,一一、(一一、

、構(gòu)造棧模塊JI棧插入模塊J棧刪除模塊J[構(gòu)造隊(duì)列模塊J[隊(duì)列插入模塊J[隊(duì)列刪除模塊,2.具體設(shè)計(jì)<1〉類型定義#defineSTACKINIT_SIZE100#defineSTACKINCREMENT10#defineMONEY3typedefintStatus;typedefstructE1emTyPe{chara[3];ointnum;inttime;}ElemType;typedefstructSqStack{E1emType*base;〃在棧構(gòu)造之前和銷毀之后,base的值為NULLE1emType*top;〃棧頂指針intstacksize;//當(dāng)前已經(jīng)分派的存儲(chǔ)空間,以元素為單位}SqStack;//棧的表達(dá)typedefstructQNode{oElemTypedata;structQNode*next;}QNode,*QueuePtr;〃隊(duì)列的表達(dá)typedefstruetLinkQueue{QueuePtrfront;//隊(duì)頭指針QueuePtrrear;//隊(duì)尾指針JLinkQueue;<2〉棧和隊(duì)列的基本操作StatusInitStack(SqStack&S)//構(gòu)造一個(gè)空棧StatusPush(SqStack&S,ElemTypee)〃插入元素e為新的棧頂元素StatusPop(SqStack&S,ElemType&e)〃若棧不空,則刪除S的棧頂元素,用e返回其值,并返回0K;否則返回ERRORStatusInitQueue(LinkQueue&Q)〃構(gòu)造一個(gè)空隊(duì)列QStatusEnQueue(LinkQueue&Q,ElemTypee)〃插入元素e為Q的新隊(duì)列StatusDeQueue(LinkQueue&Q,ElemType&e)〃若隊(duì)列不空,則刪除Q的對(duì)頭元素,用e返回其值,并返回0k;否則返回ERROR;〈3〉部分操作的算法StatusInitStack(SqStack&S){〃構(gòu)造一個(gè)空棧S.base=(ElemType*)ma1loc(STACK_INIT_SIZE*sizeof(ElemType));of(!S.base)exit(OVERFLOW);。S.top=S.base;。S.stacksize=STACKINIT_SIZE;?returnOK;)StatusPush(SqStack&S,ElemTypee){//插入元素e為新的棧頂元素if(S.top-S.base>=S.stacksize){〃棧滿,追加存儲(chǔ)空間S.base=(ElemType*)rea11oc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemType));”if(!S上ase)exit(OVERFLOW);//存儲(chǔ)分派失敗top=S.base+S.stacksize;stacksize+=STACKINITSIZE;)*S.top++=e;returnOK;)StatusPop(SqStack&S,E1emType&e){〃若棧不空,則刪除S的棧頂元素,用e返回其值,并返回OK;否則返回ERROR4f(S.top==S上ase)returnOK;e=*--S?top;veturn0K;}//———————-隊(duì)歹UStatusInitQueue(LinkQueue&Q){//構(gòu)造一個(gè)空隊(duì)列QQfront=Q.rear=(QueuePtr)ma11oc(sizeof(QNode));if(!Q.front)exit(OVERFLOW);〃存儲(chǔ)分派失敗°Q.front—>next=NULL;return0K;)StatusEnQueue(LinkQueue&Q,ElemTypee){//插入元素e為Q的新隊(duì)列p=(QueuePtr)malloc(sizeof(QNode));〃存儲(chǔ)分派失敗oi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論