版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、華北水利水電學(xué)院數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告201120絲學(xué)年第一學(xué)期2011級(jí)計(jì)算機(jī)專業(yè)班級(jí):*學(xué)號(hào):*姓名:*實(shí)驗(yàn)二棧和隊(duì)列及其應(yīng)用一、實(shí)驗(yàn)?zāi)康模? .掌握棧的特點(diǎn)(先進(jìn)后出FILO)及基本操作,如入棧、出棧等,棧的順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),以便在實(shí)際問(wèn)題背景下靈活應(yīng)用。2 .掌握隊(duì)列的特點(diǎn)(先進(jìn)先出FIFO)及基本操作,如入隊(duì)、出隊(duì)等,隊(duì)列順序存儲(chǔ)結(jié)構(gòu)、鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)和循環(huán)隊(duì)列的實(shí)現(xiàn),以便在實(shí)際問(wèn)題背景下靈活運(yùn)用。二、實(shí)驗(yàn)內(nèi)容:1 .鏈棧的建立、入棧、出棧操作。2 .環(huán)形隊(duì)列的建立、入隊(duì)、出隊(duì)操作。3 .停車場(chǎng)管理。設(shè)停車場(chǎng)內(nèi)只有一個(gè)可停放n輛汽車的狹長(zhǎng)通道,且只有一個(gè)大門可供汽車進(jìn)出。汽車在停車場(chǎng)
2、內(nèi)按車輛到達(dá)時(shí)間的先后順序,依次由北向南排列(大門在最南端,最先到達(dá)的第一輛車停放在車場(chǎng)的最北端),若車場(chǎng)內(nèi)已停滿n輛汽車,則后來(lái)的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當(dāng)停車場(chǎng)內(nèi)某輛車要離開時(shí),在它之后開入的車輛必須先退出車場(chǎng)為它讓路,待該輛車開出大門外,其它車輛再按原次序進(jìn)入車場(chǎng),每輛停放在車場(chǎng)的車在它離開停車場(chǎng)時(shí)必須按它停留的時(shí)間長(zhǎng)短交納費(fèi)用。試為停車場(chǎng)編制按上述要求進(jìn)行管理的模擬程序。實(shí)現(xiàn)提示:以棧模擬停車場(chǎng),以隊(duì)列模擬車場(chǎng)外的便道,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理。每一組輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車到達(dá)”或離去”信息、汽車牌照號(hào)碼及到達(dá)或離
3、去的時(shí)刻,對(duì)每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出數(shù)據(jù)為:若是車輛到達(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é)點(diǎn))實(shí)現(xiàn)。需另設(shè)一個(gè)棧,臨時(shí)停放為給要離去的汽車讓路而從停車場(chǎng)退出來(lái)的汽車,也用順序存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)。輸入數(shù)據(jù)按到達(dá)或離去的時(shí)刻有序。棧中每個(gè)元素表示一輛汽車,包含兩個(gè)數(shù)據(jù)項(xiàng):汽車的牌照號(hào)碼和進(jìn)入停車場(chǎng)的時(shí)刻。設(shè)n=2,輸入數(shù)據(jù)為:(A'1,5),(飛2,10),('D;1,15),('A'3,20),(飛4,25),('A'5
4、,30),('D'2,35),('D;4,40),('日0,0)。每一組輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車到達(dá)”或離去”信息、汽車牌照號(hào)碼及到達(dá)或離去的時(shí)刻,其中,酸示到達(dá);詼?zhǔn)倦x去,或示輸入結(jié)束。三、實(shí)驗(yàn)要求:1 .C/C+完成算法設(shè)計(jì)和程序設(shè)計(jì)并上機(jī)調(diào)試通過(guò)。2 .撰寫實(shí)驗(yàn)報(bào)告,提供實(shí)驗(yàn)結(jié)果和數(shù)據(jù)。3 .寫出算法設(shè)計(jì)小結(jié)和心得。四、程序源代碼:1.#include<iostream.h>#include<stdlib.h>typedefstructstnodeintdata;stnode*next;第1頁(yè)共15頁(yè)LinkStack;/創(chuàng)建一
5、個(gè)棧頭結(jié)點(diǎn),無(wú)頭結(jié)voidInitStack(LinkStack*&ls)(ls=NULL;/進(jìn)棧,相當(dāng)于頭插法voidPush(LinkStack*&ls,intx)(LinkStack*p;p=(LinkStack*)malloc(sizeof(LinkStack);p->data=x;p->next=NULL;p->next=ls;ls=p;/出棧voidPop(LinkStack*&ls)(if(ls=NULL)return;LinkStack*p;intx;p=ls;while(p)(x=p->data;ls=p->next;co
6、ut<<x<<""free(p);p=ls;cout<<"出棧成功!!"<<endl;/創(chuàng)建棧voidCreatStack(LinkStack*&ls)(InitStack(ls);inti=1,num;cout<<"以000表示輸入結(jié)束!"<<endl;while(1)(cout<<"請(qǐng)輸入第"<<i<<"個(gè)元素:";cin>>num;if(num=000)共15頁(yè)第
7、2頁(yè)break;Push(ls,num);i+;)cout<<"進(jìn)棧成功!"<<endl;)voidmain()(LinkStack*ls,*p;CreatStack(ls);Pop(ls);2.#include<iostream.h>#defineQueueSize100typedefstructsqqueue(intdataQueueSize;intfront,rear;SqQueue;/初始化隊(duì)列voidInitQueue(SqQueue&qu)qu.rear=qu.front=0;/進(jìn)隊(duì)intEnQueue(SqQueue
8、&sq,intx)(if(sq.rear+1)%QueueSize=sq.front)return0;sq.rear=(sq.rear+1)%QueueSize;sq.datasq.rear=x;return1;/出隊(duì)voidDeQueue(SqQueue&sq)(intx;if(sq.front=sq.rear)return;while(sq.front!=sq.rear)(sq.front=(sq.front+1)%QueueSize;x=sq.datasq.front;cout<<x<<""第3頁(yè)共15頁(yè)cout<<
9、"出隊(duì)成功!"<<endl;)/創(chuàng)建隊(duì)voidCreatQueue(SqQueue&sq)(InitQueue(sq);intnum,i=1;cout<<"以000表示輸入結(jié)束!"<<endl;while(1)(cout<<"請(qǐng)輸入第"<<i<<"個(gè)元素:";cin>>num;if(num=000)break;EnQueue(sq,num);i+;)cout<<"進(jìn)隊(duì)成功!"<<e
10、ndl;)voidmain()(SqQueuesq;CreatQueue(sq);DeQueue(sq);)3.#include<iostream.h>#include<stdlib.h>#include<stdio.h>#defineMAX2#defineprice0.05typedefstructnode(inthour;intmin;Time;/時(shí)間結(jié)點(diǎn)typedefstructNode(charnum10;/車牌號(hào)Timereach;/時(shí)間Timeleave;CarNode;/車輛信息結(jié)點(diǎn)typedefstructNODE(CarNode*stack
11、MAX;inttop;第4頁(yè)共15頁(yè)CarStack;/順序棧模擬車站typedefstructQNode/隊(duì)列(CarNode*data;QNode*next;QueueNode;/鏈隊(duì)結(jié)點(diǎn)類型typedefstructpqrt(QueueNode*front,*rear;/設(shè)置頭指針尾指針LinkQueueCar;模擬通道/初始化棧voidInitStack(CarStack*cs);/初始化隊(duì)列(便道)intInitQueue(LinkQueueCar*qc);/車輛到達(dá)intArrival(CarStack*Enter,LinkQueueCar*qc);/車輛離開voidLeave(C
12、arStack*Enter,CarStack*Temp,LinkQueueCar*qc);/顯示車庫(kù)信息voidList(CarStacks,LinkQueueCarw);voidmain()(CarStackEnter,Temp;LinkQueueCarWait;intch;InitStack(&Enter);InitStack(&Temp);InitQueue(&Wait);while(1)(cout<<"歡迎光臨"<<endl;cout<<""<<endl;cout<&l
13、t;"1.車輛到達(dá)"<<endl;cout<<"2.車輛離開"<<endl;cout<<"3.車場(chǎng)顯示"<<endl;cout<<"4.退出程序"<<endl;cout<<""<<endl;cout<<"請(qǐng)選擇所需的服務(wù)!"<<endl;while(1)(cin>>ch;if(ch>=1&&ch<=4)br
14、eak;switch(ch)第5頁(yè)共15頁(yè)(case1:Arrival(&Enter,&Wait);break;case2:Leave(&Enter,&Temp,&Wait);break;case3:List(Enter,Wait);break;case4:exit(0);break;default:break;voidInitStack(CarStack*cs)(cs->top=-1;/初始化棧for(inti=0;i<MAX;i+)cs->stackcs->top=NULL;intInitQueue(LinkQueueCar*
15、qc)/初始化隊(duì)列?(/qc=(LinkQueueCar*)malloc(sizeof(LinkQueueCar);這句話不能要qc->front=(QueueNode*)malloc(sizeof(QueueNode);if(qc->front!=NULL)(qc->front->next=NULL;/帶頭結(jié)點(diǎn)的qc->rear=qc->front;一定要注意賦值順序不能反了!!!return1;elsereturn-1;/打印車站車離開的信息voidPrint(CarNode*p,introom)(intA1,A2,B1,B2;車輛收費(fèi)cout<&
16、lt;"請(qǐng)輸入離開時(shí)間:/*:*/"<<endl;cout<<”請(qǐng)輸入離開時(shí)間的時(shí)(0-23):"cin>>p->leave.hour;while(p->leave.hour<p->reach.hour|p->leave.hour>23)(cout<<"error!"<<endl;cin>>p->leave.hour;B1=p->leave.hour;第6頁(yè)共15頁(yè)cout<<"請(qǐng)輸入離開時(shí)間的分鐘(0-
17、59):"cin>>p->leave.min;while(p->leave.min<0|p->leave.min>59)cout<<"error!"<<endl;cin>>p->leave.min;B2=p->leave.min;cout<<endl<<"離開汽車的車牌號(hào)為:"<<endl;puts(p->num);cout<<"其至U達(dá)日間為:"<<p->reac
18、h.hour<<":"<<p->reach.min<<endl;cout<<"其離開日間為:"<<p->leave.hour<<":"<<p->leave.min<<endl;A1=p->reach.hour;A2=p->reach.min;cout<<"應(yīng)交費(fèi)用為:"<<(B1-A1)*60+(B2-A2)*price<<"元"<
19、;<endl;free(p);intArrival(CarStack*Enter,LinkQueueCar*qc)CarNode*p;QueueNode*t;p=(CarNode*)malloc(sizeof(CarNode);cout<<”請(qǐng)輸入車牌號(hào)(例A8888):"<<endl;gets(p->num);if(Enter->top+1)<MAX)Enter->top+;cout<<"車輛在車場(chǎng)第"<<Enter->top<<"位置"<&
20、lt;endl;cout<<"請(qǐng)輸入到達(dá)時(shí)間:/*:*/"<<endl;cout<<”請(qǐng)輸入到達(dá)時(shí)間的時(shí)(0-23):"cin>>p->reach.hour;while(p->reach.hour<0|p->reach.hour>23)cout<<"error!"<<endl;cin>>p->reach.hour;cout<<”請(qǐng)輸入到達(dá)時(shí)間的分(0-59):"cin>>p->reach
21、.min;Enter->stackEnter->top=p;注意數(shù)組下標(biāo)是從0開始,在顯示時(shí)下標(biāo)也要與之對(duì)應(yīng)cout<<"車近停車場(chǎng)成功!"<<endl;return1;elsecout<<"該車需在便道上等待!"<<endl;第7頁(yè)共15頁(yè)t=(QueueNode*)malloc(sizeof(QueueNode);進(jìn)隊(duì)歹Ut->data=p;t->next=NULL;qc->rear->next=t;qc->rear=t;cout<<"車進(jìn)
22、便道成功!!"<<endl;return1;voidLeave(CarStack*Enter,CarStack*Temp,LinkQueueCar*qc)CarNode*p,*t;QueueNode*q;introom;if(Enter->top>-1)/判斷車場(chǎng)是否為空while(1)cout<<"請(qǐng)輸入車在車場(chǎng)中的位置:";cin>>room;if(room=0&&room<=Enter->top)break;/要離開的車后面還有車,則后面的車需進(jìn)入臨時(shí)棧給前面的車讓路while(En
23、ter->top>room)/用Enter->top和room相比看你的車在第幾個(gè)位置,前面的幾輛車需全部讓路Temp->top+;Temp->stackTemp->top=Enter->stackEnter->top;Enter->stackEnter->top=NULL;Enter->top-;/讓路完以后車再離開p=Enter->stackEnter->top;Enter->stackEnter->top=NULL;Enter->top-;/車離開后,如果臨時(shí)棧里有車,重新進(jìn)車站while(T
24、emp->top>=0)Enter->top+;Enter->stackEnter->top=Temp->stackTemp->top;Temp->stackTemp->top=NULL;Temp->top-;cout<<"臨時(shí)車場(chǎng)里的車重新進(jìn)站成功!"<<endl;第8頁(yè)共15頁(yè)P(yáng)rint(p,room);/調(diào)用計(jì)費(fèi)函數(shù)/車離開后如果便道上有車,也進(jìn)車站if(qc->front!=qc->rear&&Enter->top<MAX)/判斷便道上是否有車
25、以及車站是否已滿(q=qc->front->next;t=q->data;Enter->top+;cout«"便道上的"«t->num«"號(hào)車進(jìn)入車場(chǎng)第"«Enter->top«"位置"<<endl;cout<<"請(qǐng)輸入現(xiàn)在的時(shí)間:/*:*/"«endl;cout<<”請(qǐng)輸入到達(dá)時(shí)間的時(shí)(0-23):"cin»t->reach.hour;while(t->
26、;reach.hour<0|t->reach.hour>23)(cout«"error!"«endl;cin»t->reach.hour;)cout<<”請(qǐng)輸入到達(dá)時(shí)間的分(0-59):"cin»t->reach.min;qc->front->next=q->next;/出便道if(q=qc->rear)qc->front=qc->rear;Enter->stackEnter->top=t;/進(jìn)車站free(q);cout«&
27、quot;便道的車進(jìn)入停車場(chǎng)成功!"«endl;)elsecout«"便道里沒(méi)有車!"«endl;)elsecout«"車場(chǎng)里沒(méi)有車!"«endl;)voidListl(CarStack*s)/顯示車場(chǎng)信息(inti;if(s->top>-1)(cout«"車場(chǎng)"«endl;cout«"位置時(shí)間車牌號(hào)"«endl;for(i=0;i<(s->top+1);i+)(cout«"
28、;"«i«""«s->stacki->reach.hour«":"«s->stacki->reach.min<<""«s->stacki->num«endl;)elsecout«"車場(chǎng)里沒(méi)有車!"«endl;第9頁(yè)共15頁(yè))voidList2(LinkQueueCar*w)/顯示便道信息(QueueNode*p;p=w->front->next;/p先指向第
29、輛車,if(w->front!=w->rear)/判斷便道是否為空(cout<<"等待車輛的號(hào)碼為:"<<endl;while(p)/用指針p遍歷輸出數(shù)據(jù)(puts(p->data->num);p=p->next;)elsecout<<"便道里沒(méi)有車!"<<endl;)voidList(CarStacks,LinkQueueCarw)/顯示整個(gè)停車場(chǎng)的信息(intflag,tag;flag=1;while(flag)(cout<<"請(qǐng)選擇1|2|3:&qu
30、ot;<<endl;cout<<"1.車場(chǎng)"<<""<<"2.便道"<<""<<"3.返回"<<endl;while(1)(cin>>tag;if(tag>=1|tag<=3)break;elsecout<<"請(qǐng)選擇1|2|3:"<<endl;)switch(tag)(case1:List1(&s);break;case2:List2(&
31、amp;w);break;case3:flag=0;break;default:break;)第10頁(yè)共15頁(yè)五、程序運(yùn)行情況(寫出輸入數(shù)據(jù)及運(yùn)行結(jié)果)F廣擻據(jù)給飽鎧嗤tDgbug迪戔,©日”蓑24670-入元元元元元加-B123451du跖第第第第第功2律人人人入人成4以請(qǐng)請(qǐng)請(qǐng)清迂舞7jjiu匕!回F:一激振結(jié)構(gòu)環(huán)形隊(duì)吐ugiF形隊(duì)列.蘇甘0f!s036780叨入元元元元元隊(duì)出-H12345!而第第第第第功8”入入人入47以請(qǐng)請(qǐng)清清g5I.E:|SJg停=D£bug停車場(chǎng),exe'第11頁(yè)共15頁(yè)歡迎光臨達(dá)開一存到高顯程IsU!II請(qǐng)選擇所需的服名?場(chǎng)達(dá)達(dá)達(dá)場(chǎng)8任
32、人A-木依8號(hào)功置/*魏!1-IU-«-JULILKJ.f達(dá)開一言倒離顯程in請(qǐng)選擇所需的服務(wù),近170:>>39y2sH0-0-*cCMM時(shí)分位>叩叩加日一日一日郛成場(chǎng)達(dá)達(dá)達(dá)場(chǎng)車4dHs在入入d達(dá)開示到離顯1234達(dá)開一律到離顯程出STI-M-IM!M清選擇所需的服務(wù)?請(qǐng)輸入車牌號(hào)”如日888兀5666上等待,f請(qǐng)選擇所需的服務(wù)?半一第12頁(yè)共15頁(yè)請(qǐng)選擇所需的服務(wù)?請(qǐng)輸入車牌號(hào)£例城即8,二帽置黠等待旗迎光臨請(qǐng)選擇所需的服務(wù)?詩(shī)1.清1.2等待車輛的號(hào)碼為:£5666:213:2.便道3.<05:0A8SBB7:0R866SIQ1TB3返回睛選擇i:213:1.豐場(chǎng)2.便道3.返回41時(shí)間車牌號(hào)1234達(dá)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025武漢市微型計(jì)算機(jī)的買賣合同
- 農(nóng)村土地流轉(zhuǎn)合同標(biāo)準(zhǔn)(2025年度):土地規(guī)模經(jīng)營(yíng)與效益提升
- 2025年度農(nóng)產(chǎn)品電商平臺(tái)入駐合作合同2篇
- 2025北京市室內(nèi)裝修合同
- 二零二五年度風(fēng)力發(fā)電工程款結(jié)算與環(huán)境保護(hù)合同3篇
- 二零二五年度旅游公司整體轉(zhuǎn)讓合同3篇
- 2025年度年度公司終止職工勞動(dòng)合同補(bǔ)償方案合同3篇
- 2025年度工業(yè)用地租賃合同書(含環(huán)保標(biāo)準(zhǔn))3篇
- 2025年度農(nóng)村房屋土地租賃與農(nóng)村環(huán)境治理合作協(xié)議
- 二零二五年度智能停車場(chǎng)租賃管理服務(wù)合同3篇
- Part 6 Unit 8 Green Earth 教案-【中職專用】高一英語(yǔ)精研課堂(高教版2021·基礎(chǔ)模塊2)
- 艾森克人格問(wèn)卷(EPQ)(成人)
- 設(shè)備維護(hù)與故障排除項(xiàng)目風(fēng)險(xiǎn)評(píng)估報(bào)告
- (新版)質(zhì)量知識(shí)競(jìng)賽參考題庫(kù)400題(含各題型)
- 幼兒園小班語(yǔ)言《誰(shuí)的耳朵》課件
- 院前急救診療技術(shù)操作規(guī)范
- 患者轉(zhuǎn)診記錄單
- 美好生活“油”此而來(lái)-暨南大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 買賣合同糾紛案民事判決書
- 神經(jīng)內(nèi)科應(yīng)急預(yù)案完整版
- 2023零售藥店醫(yī)保培訓(xùn)試題及答案篇
評(píng)論
0/150
提交評(píng)論