




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質文檔-傾情為你奉上山東理工大學計算機學院課 程 設 計(數(shù)據(jù)結構)班 級姓 名學 號 指導教師2013年 1月 15日課程設計任務書及成績評定課題名稱電梯模擬、題目的目的和要求: 鞏固和加深對數(shù)據(jù)結構的理解,通過上機實驗、調試程序,加深對課本知識的理解,最終使學生能夠熟練應用數(shù)據(jù)結構的知識寫程序。(1)通過本課程的學習,能熟練掌握幾種基本數(shù)據(jù)結構的基本操作。(2)能針對給定題目,選擇相應的數(shù)據(jù)結構,分析并設計算法,進而給出問題的正確求解過程并編寫代碼實現(xiàn)。 、設計進度及完成情況日 期內 容2013-1-7選取參考書,查閱有關文獻資料,完成資料搜集和系統(tǒng)分析工作。2013-1-10創(chuàng)建相
2、關數(shù)據(jù)結構,錄入源程序。2013-1-13調試程序并記錄調試中的問題,初步完成課程設計報告。2013-1-15上交課程設計報告打印版并進行課程設計答辯,要求每個同學針對自己的設計回答指導教師3-4個問題。2013-1-16考核結束后將課程設計報告和源程序的電子版交班長統(tǒng)一刻光盤上交。、主要參考文獻及資料1 嚴蔚敏 數(shù)據(jù)結構(C語言版)清華大學出版社 19992 嚴蔚敏 數(shù)據(jù)結構題集(C語言版)清華大學出版社 19993 譚浩強 C語言程序設計 清華大學出版社4 與所用編程環(huán)境相配套的C語言或C+相關的資料、成績評定:設計成績: (教師填寫)指導老師: (簽字)二 年 月 日專心-專注-專業(yè)目
3、錄第一章 概述1第二章 系統(tǒng)分析2第三章 概要設計4第四章 詳細設計7第五章 運行與測試25第六章 總結與心得28參考文獻 28第一章 概述課程設計是實踐性教學中的一個重要環(huán)節(jié),它以某一課程為基礎,可以涉及和課程相關的各個方面,是一門獨立于課程之外的特殊課程。課程設計是讓同學們對所學的課程更全面的學習和應用,理解和掌握課程的相關知識。數(shù)據(jù)結構是一門重要的專業(yè)基礎課,是計算機理論和應用的核心基礎課程。數(shù)據(jù)結構課程設計,要求學生在數(shù)據(jù)結構的邏輯特性和物理表示、數(shù)據(jù)結構的選擇和應用、算法的設計及其實現(xiàn)等方面,加深對課程基本內容的理解。同時,在程序設計方法以及上機操作等基本技能和科學作風方面受到比較系
4、統(tǒng)和嚴格的訓練。在這次的課程設計中我選擇的題目是圖書管理。傳統(tǒng)的人工圖書管理,基本業(yè)務活動有對一本書的采編入庫、清除庫存、借閱和歸還等等,但是人工統(tǒng)計操作起來效率相對來說要低,也容易出錯。但是現(xiàn)在這些業(yè)務借助計算機系統(tǒng)完成后,效率可以得到提高,也可以減少出錯的幾率??梢允箞D書管理的日常業(yè)務更加的方便迅捷、減少很多勞動量。1、訓練學生靈活應用所學數(shù)據(jù)結構知識,獨立完成問題分析,結合數(shù)據(jù)結構理論知識,編寫程序求解指定問題。 2.初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設計、程序編碼、測試等基本方法和技能;3.提高綜合運用所學的理論知識和方法獨立分析和解決問題的能力;4.訓練用系統(tǒng)的觀點和軟件開發(fā)一般規(guī)
5、范進行軟件開發(fā),鞏固、深化學生的理論知識,提高編程水平,并在此過程中培養(yǎng)他們嚴謹?shù)目茖W態(tài)度和良好的工作作風。第二章 系統(tǒng)分析任務根據(jù)教材數(shù)據(jù)結構題集(C語言版)(嚴蔚敏、吳偉民主編)選擇課程設計題目,要求通過設計,在數(shù)據(jù)結構的邏輯特性和物理表示、數(shù)據(jù)結構的選擇應用、算法的設計及其實現(xiàn)等方面加深對課程基本內容的理解和綜合運用。設計題目從數(shù)據(jù)結構題集“第二篇 實習篇”中選取,每班每題不得超過2人。另選題:學生自選課題學生原則上可以結合個人愛好自選課題,要求課題有一定的深度與難度,有一定的算法復雜性,能夠鞏固數(shù)據(jù)結構課程所學的知識。學生自選課題需在17周前報課程設計指導教師批準方可生效。要求:1、在
6、處理每個題目時,要求從分析題目的需求入手,按設計抽象數(shù)據(jù)類型、構思算法、通過設計實現(xiàn)抽象數(shù)據(jù)類型、編制上機程序和上機調試等若干步驟完成題目,最終寫出完整的分析報告。前期準備工作完備與否直接影響到后序上機調試工作的效率。在程序設計階段應盡量利用已有的標準函數(shù),加大代碼的重用率。 2、.設計的題目要求達到一定工作量(300行以上代碼),并具有一定的深度和難度。3、程序設計語言推薦使用C/C+,程序書寫規(guī)范,源程序需加必要的注釋;4、每位同學需提交可獨立運行的程序;5 、每位同學需獨立提交設計報告書(每人一份),要求編排格式統(tǒng)一、規(guī)范、內容充實,不少于10頁(代碼不算);6、課程設計實踐作為培養(yǎng)學生
7、動手能力的一種手段,單獨考核。(1)、模擬某校五層教學樓的電梯系統(tǒng)。該樓有一個自動電梯,能在每層停留。五個樓層由下至上依次稱為地下層、第一層、第二層、第三層和第四層,其中第一層是大樓的進出層,即是電梯的“本壘層”,電梯“空閑”時,將來該層候命。五個樓層從下到上的編號為:0、1、2、3、4。除了地下層外,每一層都有一個要求向下的按鈕除了第四層外,每一層都有一個要求向上的按鈕。對應的變量為:CallUp0.3和CallDown1.4。電梯內的五個目標層按鈕對應的變量為:CallCar0.4。(2)、電梯一共有七個狀態(tài),即正在開門(Opening)、已開門(Opened)、正在關門(Closing)
8、、已關門(Closed)、等待(Waiting)。(3)、 乘客可隨機地進出于任何層。對每個人來說,他有一個能容忍的最長等待時間,一旦等候電梯時間過長,他將放棄。對于在樓層內等待電梯的乘客,將插入在等候隊列里,每一層有兩個等候隊列,一隊要求向上,一隊要求向下,用鏈隊列來實現(xiàn)。對于在電梯內的乘客,用五個乘客棧來實現(xiàn),該乘客要去哪一層,就把他放在相應編號的棧中,對應變量為k04。(4)、模擬時鐘從0開始,時間單位為0.1秒。人和電梯的各種動作均要耗費一定的時間單位(簡記為t):有人進出時,電梯每隔40t測試一次,若無人進出,則關門關門和開門各需要20t每個人進出電梯均需要25t如果電梯在
9、某層靜止時間超過300t,則駛回1層候命。(5)、按時序顯示系統(tǒng)狀態(tài)的變化過程:發(fā)生的全部人和電梯的動作序列。第三章 概要設計乘客類型反映乘客的所有屬性。Man數(shù)據(jù)對象:D=ai乘客信息,I=1,2,n,n0數(shù)據(jù)關系:R=<ai-1,ai>|ai-1,aiD,i=2,n基本操作:void inel();該乘客進入電梯時 發(fā)生的數(shù)據(jù)轉換 及基本的輸出void onwait(); 該乘客進入某層等待隊列時 發(fā)生的數(shù)據(jù)變動 及基本的輸出long giveup();void getout();該乘客出電梯時所發(fā)生的數(shù)據(jù)變動,及基本的狀態(tài)輸出電梯棧類型電梯內的乘客用乘客棧表示,去不同樓層的乘
10、客放在不同的棧中。ADT Estack數(shù)據(jù)對象:D=ai乘客信息,I=1,2,n,n0數(shù)據(jù)關系:R=<ai-1,ai>|ai-1,aiD,i=2,n基本操作:本設計中運用了一個鏈棧的模板,可以自己定義棧的數(shù)據(jù)類型共用到了五個棧,分別表示電梯內到往某樓的乘客,為了方便設計,用一個棧的數(shù)組來表示這五個棧,數(shù)組的下標表示樓層。等候隊列類型在電梯外等待的乘客用等待隊列表示。每層各有一個等待隊列,表示在該層樓排隊的乘客。為了方便程序設計,用一個隊列的數(shù)組來表示這五個隊列,數(shù)組的下標表示樓層。同上,本次設計也用了一個鏈隊列的模板,電梯相關的動作表示電梯的各個屬性和所有動作。Void e1()表
11、示電梯開門 時所發(fā)生的動作Void e2()在本層出電梯的乘客從本層的棧中彈出調用乘客走出樓梯事件Void e3()電梯外的隊列入電梯棧Void e4()電梯狀態(tài)的轉換Void e5()電梯關門時基本狀態(tài)的輸出 及一些數(shù)據(jù)變換Void e6()電梯上升時基本狀態(tài)的輸出 及數(shù)據(jù)的變動Void e7()電梯下降時基本狀態(tài)的輸出,及數(shù)據(jù)的變動Void e8()電梯處于靜止狀態(tài)時狀態(tài)的輸出,及數(shù)據(jù)的變動控制模塊Void control()與電梯控制有關的函數(shù)集合,用于判斷電梯門的開關,及電梯狀態(tài)轉換控制時間模塊Void Wait(long tt)本函數(shù)用于時間模擬中延時tt個單位的時間Void tim
12、es()本函數(shù)用于現(xiàn)在時間狀態(tài)的保存,用于輸入新的 乘客時去處輸入所用的時間Void timer()本函數(shù)用于時間狀態(tài)的恢復輸入輸出模塊 diantizhuangtai()輸出電梯現(xiàn)在的狀態(tài) subsr()輸入函數(shù)的子函數(shù)用于處理數(shù)據(jù)輸入并記錄用于輸入數(shù)據(jù)所耽誤的時間以維持系統(tǒng)時間的準確性。Void shuru()輸人下一個乘客的信息,及相關的判斷本函數(shù)用于現(xiàn)在時間狀態(tài)的恢復,用于輸入新的 乘客時去處輸入所用的時間主程序主程序主要處理兩類事件:顯示歡迎界面,輸入事件和電梯狀態(tài)轉換事件。輸入事件是輸入乘客的信息和下一個乘客到來的時間狀態(tài)轉換事件是處理在當前狀態(tài)下電梯的動作本程序包含6個模塊:(1
13、)主程序模塊(2)乘客模塊(3)電梯模塊(4)時間模塊(5)控制模塊(6)輸入輸出模塊各模塊之間的調用關系如下:電梯控制模塊主程序輸入輸出模塊時間模塊電梯模塊乘客模塊第四章 詳細設計/ 電梯模擬.cpp : 定義控制臺應用程序的入口點。/#include "stdafx.h"/此頭文件在詳細設計的結尾#define MAXMAN 5#define TIME 100using namespace std;/-變量定義-enum states goingup,goingdown,idle;states state=idle;states nowstate=idle;/控制樓梯的
14、上下int nowfloor=1;/電梯當前的樓層/int d1=0;未用到/int d2=0;/int d3=0;int callup5;int calldown5;int callcar5;long timesum;/延時函數(shù)用到的變量long delay;long sum=1;long nexttime;/下一個乘客出現(xiàn)的時刻int tf;/時間恢復標志,用在輸入函數(shù)遞歸調用中/int flag;/事件結束的標識long jingzhi;/靜止開始時間、用于判斷樓梯是否在某一層等待超過300tint f;/電梯動作標志配合jingzhi協(xié)同int lt;/下一個人出現(xiàn)的時間間隔int r
15、enshu; /電梯內的人數(shù)LinkStack<int> biaozhi;/用于時間保存函數(shù)遞歸調用過程中對時間的保存void chushihua()int i=5;while(i)callupi=0;calldowni=0;callcari=0;i-;/-自定義乘客類-class man public:int number;int infloor;int outfloor;long intime;long giveuptime;void inel();void onwait();long giveup();void getout();friend ostream&oper
16、ator << (ostream& output,man& c)/重載流輸出用于棧和隊列的遍歷output<<c.number<<" "return output;man m;/中間變量man n;/等待隊列LinkQueue<man> s5;/電梯棧LinkStack<man> k5;void man:inel()if(ime+m.giveuptime*TIME)<clock()-delay)cout<<clock()/TIME-delay/TIME<<&q
17、uot;,"<<nexttime/TIME<<":"<<number<<"號乘客等待超時,已自動離開!"<<endl;elsekoutfloor.Push(*this);/wait(25);cout<<clock()/TIME-delay/TIME<<","<<nexttime/TIME<<":"<<number<<"號乘客從"<<infloo
18、r<<"樓進入電梯。"<<endl;callcaroutfloor=1;void man:onwait()sinfloor.EnQueue(*this);/wait(25);cout<<clock()/TIME-delay/TIME<<","<<nexttime/TIME<<":"<<number<<"號乘客進入"<<infloor<<"樓的等待隊列。"<<endl
19、;long man:giveup()cout<<clock()/TIME-delay/TIME<<","<<nexttime/TIME<<":"<<number<<"號乘客放棄等待"<<endl;return 0;void man:getout()cout<<clock()/TIME-delay/TIME<<","<<nexttime/TIME<<":"<&l
20、t;number<<"號乘客出電梯"<<endl;/-時間函數(shù)定義-int shuru();int wait(long tt)/延時控制函數(shù)/cout<<clock()/TIME-delay/TIME<<","<<nexttime/TIME<<":"<<"wait 計時開始"<<endl;clock_t end;/end=clock()+tt*TIME;end=clock()-delay;while(clock()<
21、;end+delay+tt*TIME)/修正只用當前時刻造成的錯誤if(clock()-delay)>=nexttime)/當 當前時刻 大于等于下一個人到來的時刻時,調用輸入函數(shù)shuru();/cout<<clock()/TIME-delay/TIME<<","<<nexttime/TIME<<":"<<"wait 計時結束"<<endl;return 0;void times()/保存時間biaozhi.Push(clock();timesum=clo
22、ck();/cout<<timesum/TIME<<endl;void timer()/恢復時間delay+=clock()-biaozhi.Pop();/cout<<delay/TIME<<endl;/-電梯相關的活動-int e1 ()/開門wait(20);cout<<clock()/TIME-delay/TIME<<","<<nexttime/TIME<<":"<<"電梯開門。"<<endl;return 0
23、;int e2()/在本層出電梯的人出棧while(!knowfloor.StackEmpty()n=knowfloor.Pop();wait(25);n.getout();renshu-;return 0;int e3()/樓梯外的隊列入棧while(!snowfloor.QueueEmpty()&&renshu<MAXMAN)n=snowfloor.DeQueue();wait(25);n.inel();renshu+;return 0;int e6()/電梯上升cout<<clock()/TIME-delay/TIME<<",&qu
24、ot;<<nexttime/TIME<<":"<<"電梯正在上升中"<<endl;wait(30);callcarnowfloor=0;nowfloor+;callupnowfloor-1=0;cout<<clock()/TIME-delay/TIME<<","<<nexttime/TIME<<":"<<"電梯上升到了第"<<nowfloor<<"層&qu
25、ot;<<endl;callcarnowfloor=0;f=1;return 0;int e7()/電梯下降cout<<clock()/TIME-delay/TIME<<","<<nexttime/TIME<<":"<<"電梯正在下降中"<<endl;wait(30);callcarnowfloor=0;nowfloor-;calldownnowfloor+1=0;cout<<clock()/TIME-delay/TIME<<&
26、quot;,"<<nexttime/TIME<<":"<<"電梯下降到了第"<<nowfloor<<"層"<<endl;f=1;callcarnowfloor=0;return 0;int e8()/靜止cout<<clock()/TIME-delay/TIME<<","<<nexttime/TIME<<":"<<"電梯靜止,現(xiàn)在的樓層是:&qu
27、ot;<<nowfloor<<endl;if(f!=0)jingzhi=clock();f=0;return 0;int e4()/電梯狀態(tài)的轉換int diantizhuangtai();system("cls");diantizhuangtai();int c,d,j;/c為電梯是否應該向上走的標志,d是向下的標志j=nowfloor;if(callupj=1)c=1;elsefor(c=0,j=nowfloor+1;j<=4;j+)if(callcarj=1|callupj=1|calldownj=1|(kj.StackEmpty()=0
28、)|sj.QueueEmpty()=0)c=1;break;j=nowfloor;if(calldownj=1)d=1;elsefor(d=0,j=nowfloor-1;j>=0;j-)if(callcarj=1|callupj=1|calldownj=1|(kj.StackEmpty()=0)|sj.QueueEmpty()=0)d=1;break;if(nowstate=goingup)if(nowfloor=4|(c=0&&d=1)/電梯由向上轉到向下的條件if(nowfloor=4&&d=0)e8();/靜止elsenowstate=goingdo
29、wn;e7();/下降/callcarnowfloor=0;else/state=goingdown;if(d=0&&c=0)e8();/電梯靜止nowstate=idle;elsee6();/電梯上升elseif(nowstate=goingdown)/判斷過程基本和上一級的if語句相同if(nowfloor=0|(d=0&&c=1)if(nowfloor=0&&c=0)e8();/靜止elsenowstate=goingup;e6();/電梯上升elseif(c=0&&d=0)e8();/電梯靜止nowstate=idle;e
30、lsee7();/電梯下降elseif(c=0&&d=0)/以下是由靜止轉向其他動作過程nowstate=idle;e8();/return 0;elseif(c=1)nowstate=goingup;e6();/電梯上升elsenowstate=goingdown;e7();/電梯下降/flag=0;return 0;int e5()/關門wait(20);cout<<clock()/TIME-delay/TIME<<","<<nexttime/TIME<<":"<<"
31、;電梯關門"<<endl;return 0;/-輸入輸出函數(shù)的定義-int diantizhuangtai()/輸出電梯狀態(tài)cout<<" -下邊是電梯現(xiàn)在的狀態(tài)信息:-"<<endl<<endl;cout<<" 現(xiàn)在的樓層是:"<<nowfloor<<endl<<endl;int i;for(i=4;i>=0;i-)if(i=nowfloor)cout<<" "elsecout<<" &q
32、uot;cout<<"電梯中前往第"<<i<<"層的乘客:"ki.StackTranverse();/cout<<" 第"<<i<<"層電梯外邊的等待隊列:"/si.QueueTranverse();cout<<endl;for(i=4;i>=0;i-)if(i=nowfloor)cout<<" "elsecout<<" "/cout<<"
33、前往第"<<i<<"層的乘客:"/ki.StackTranverse();cout<<"第"<<i<<"層電梯外邊的等待乘客隊列:"si.QueueTranverse();cout<<endl;cout<<"now,next-"<<endl;return 0;int subsr()/輸入函數(shù)的子函數(shù)cout<<"請輸入乘客進入了哪層,要去哪層,容忍等待的最大時間,下一乘客到來的時間間隔:n
34、"if(tf=0)times();/保存時間狀態(tài)tf=1;while(cin>>m.infloor>>m.outfloor>>m.giveuptime>>lt)if(m.infloor=0&&m.outfloor=0&&m.giveuptime=0&<=0)int nowdelay;nowdelay=delay;cout<<""<<endl;diantizhuangtai();subsr();if(m.infloor>=5|m.outf
35、loor>=5|m.infloor=m.outfloor)cout<<clock()/TIME-delay/TIME<<","<<nexttime/TIME<<":"<<"輸入樓層錯誤!請重新輸入"<<endl;continue;elsebreak;if(tf!=0)timer();/恢復時間狀態(tài)tf=0;return 0;int shuru()/輸入函數(shù)m.number=sum;sum+;subsr();if(nexttime>clock()-del
36、ay)/下一個人到來的時間nexttime=nexttime+lt*TIME;elsenexttime=clock()-delay+lt*TIME;ime =clock()-delay;if (m.infloor>m.outfloor)calldownm.infloor=1;else callupm.infloor=1;m.onwait ();return 0;/-電梯控制函數(shù)-int control()/system("cls");if(clock()-delay)>=nexttime)/當當前時刻大于等于下一個人到來的時刻時,調用輸入函數(shù)shuru
37、();return 0;if(callcarnowfloor!=0)|callupnowfloor!=0|calldownnowfloor!=0|(knowfloor.StackEmpty()=0)|snowfloor.QueueEmpty()=0)/電梯開門的條件if(renshu=MAXMAN&&knowfloor.StackEmpty()=1)e4();elsee1();/電梯開門e2();/在本層出電梯的人出棧e3();/樓梯外的隊列入電梯棧e5();/關門e4();/電梯狀態(tài)變換elsee4();/電梯狀態(tài)改變if(f=0)callcarnowfloor=0;if(c
38、lock()-jingzhi)>300*TIME)/電梯等待時間超過300t時回到一樓if(nowfloor!=1)callcar1=1;if(knowfloor.StackEmpty()=1)|snowfloor.QueueEmpty()=1)callupnowfloor=0;calldownnowfloor=0;return 0;/-主函數(shù)-int _tmain(int argc, _TCHAR* argv)system("color 1a");/把命令提示符窗口的背景色設為藍色,前景色設為淡綠色timesum=clock();chushihua();/初始化/-
39、歡迎界面-cout<<endl<<endl<<endl<<endl<<endl<<endl;cout<<" -"<<endl;cout<<" 歡迎使用電梯模擬系統(tǒng)"<<endl;cout<<" -"<<endl<<endl;system("pause");/暫停while(1)/flag=1;system("cls");/清屏diantizh
40、uangtai();/輸出電梯狀態(tài)while(clock()-delay)<nexttime)/電梯控制if(lt>10)wait(10);control();shuru();/輸入乘客信息return 0;-以下是程序所涉及的頭文件-棧模板頭文件:-/鏈棧類的定義template<class T>struct NodeT data;Node<T> *next;/此處T可以省略;template<class T>class LinkStack/構建函數(shù),創(chuàng)建一空棧private:Node<T> *top;/ 鏈表首為棧頂public:
41、LinkStack()top=NULL;/構造函數(shù),置空鏈棧LinkStack();/ 析構函數(shù),釋放鏈棧中各結點的存儲空間void Push(T x);/ 元素x入棧T Pop();/ 棧頂元素出棧T GetTop();/ 取棧頂元素int StackEmpty(); / 判斷棧是否為空void ClearStack();/清空棧void StackTranverse();/遍歷輸出棧中元素/*friend ostream &operator << (ostream &stream, T asd)stream << asd.number;return
42、stream;*/;/鏈棧類的實現(xiàn)template<class T>LinkStack<T>:LinkStack()/析構函數(shù),銷毀棧Node<T> *q;while(top)/從棧頂開始釋放棧鏈的每一個結點的存儲空間q=top;/暫存被釋放結點top=top->next;/頭指針后移指向下一個被釋放結點delete q;template<class T>void LinkStack<T>:Push(T x)/入棧Node<T> *s;s=new Node<T>s->data=x;/創(chuàng)建一新結點,數(shù)
43、據(jù)域為x的結點ss->next=top;top=s;/新結點鏈入表首,為棧頂template<class T>T LinkStack<T>:Pop()/出棧T x; Node<T> *p;if(top=NULL) throw"下溢"x=top->data;/暫存棧頂元素p=top;top=top->next;/棧頂后移delete p;/刪除原棧頂結點return x;template <class T>T LinkStack<T>:GetTop()/獲取棧頂元素if(top=NULL) thro
44、w "棧空,棧頂無元素"return top->data;template <class T>void LinkStack<T>:ClearStack()/清空棧while(top)/從棧頂開始釋放棧鏈的每一個結點的存儲空間Node<T> *q;q=top;/暫存被釋放結點top=top->next;/頭指針后移指向下一個被釋放結點delete q;template <class T>int LinkStack<T>:StackEmpty()/測棧空if(top=NULL) return 1;elser
45、eturn 0;template <class T>void LinkStack<T>:StackTranverse()/從棧頂起,遍歷輸出棧元素 Node<T> *p; p=top; while(p) cout<<p->data; p=p->next; cout<<endl; -隊列模版頭文件-/鏈隊類的定義template<class T>struct NodesT data;Nodes<T> *next;/此處T可以省略;template<class T>class LinkQue
46、ueprivate:Nodes<T> *front;/隊頭指針,鏈表頭為隊頭Nodes<T> *rear;/隊尾指針,鏈表尾為了隊尾public:LinkQueue();/構造空隊列LinkQueue();/ 析構函數(shù),釋放鏈隊各結點的存儲空間void EnQueue(T x);/ 元素x入隊T DeQueue();/ 隊頂元素出隊T GetHead();/ 取隊頭元素T GetLast();/取隊尾元素int QueueEmpty(); / 判斷隊是否為空void ClearQueue();/void QueueTranverse();/*friend ostream
47、 &operator<<(ostream &stream,T asd)stream<<asd.number;return stream;*/;/鏈隊類的實現(xiàn)template<class T>LinkQueue<T>:LinkQueue()/構建函數(shù),創(chuàng)建一空隊front=new Nodes<T>/創(chuàng)建隊頭結點front->next=NULL;rear=front;/空隊template<class T>LinkQueue<T>:LinkQueue()/析構函數(shù),銷毀隊Nodes<T&
48、gt; *p;while(front!=NULL)/從隊頭開始逐個刪除隊列中的結點p=front;/暫存被釋放結點front=front->next;/頭指針后移指向下一個被釋放結點delete p;template<class T>void LinkQueue<T>:EnQueue(T x)/入隊Nodes<T> *s;s=new Nodes<T> s->data=x; /申請一數(shù)據(jù)域為x的結點ss->next=rear->next;rear->next=s; /新結點插在鏈隊尾rear=s; /修改尾指針if(f
49、ront->next=NULL)/如果創(chuàng)建的是首元結點,front->next指向它front->next=s;template<class T>T LinkQueue<T>:DeQueue()/出隊T x; Nodes<T> *p;if(rear=front) throw"下溢"/隊空,則下溢p=front->next;x=p->data;/暫存隊頭元素front->next=p->next;/將隊頭結點從鏈表中摘除if(p->next=NULL) rear=front;/如果出隊后為空隊
50、,修改隊尾指針delete p;return x;template <class T>T LinkQueue<T>:GetHead()/獲取隊頭元素Nodes<T> *p;if(front=rear) throw "隊空,無隊頭元素"/p=front->next;return p->data;template <class T>T LinkQueue<T>:GetLast()/獲取隊尾元素if(front=rear) throw "隊空,無隊尾元素"return rear->data;template <class T>void LinkQueue<T>:ClearQueue()/清
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 襄陽收費車位管理辦法
- 西平縣流動攤位管理辦法
- 訂單信息化系統(tǒng)管理辦法
- 證監(jiān)會新型犯罪管理辦法
- 財務不相容崗位管理辦法
- 質量巡檢專家?guī)旃芾磙k法
- 貴州省電力補貼管理辦法
- 資產(chǎn)管理與產(chǎn)權管理辦法
- 超齡農民工用工管理辦法
- 車輛gps日常管理辦法
- 公司項目提成獎勵制度
- 集成電路產(chǎn)品供應鏈分析
- DB11T 1430-2017 古樹名木雷電防護技術規(guī)范
- 電氣專業(yè)知識
- 葡萄酒與西方文化學習通超星期末考試答案章節(jié)答案2024年
- 尿素水解器檢修施工方案
- 帶狀皰疹病例匯報
- 《公頃和平方千米》(課件)人教版四年級數(shù)學上冊
- 八年級上冊美術-4《用色彩表達情感》【課件】
- NBT 35095-2017 水電工程小流域水文計算規(guī)范
- 2024年山西煤化所財務處招聘歷年(高頻重點提升專題訓練)共500題附帶答案詳解
評論
0/150
提交評論