航空客運售票服務(wù)系統(tǒng)_第1頁
航空客運售票服務(wù)系統(tǒng)_第2頁
航空客運售票服務(wù)系統(tǒng)_第3頁
航空客運售票服務(wù)系統(tǒng)_第4頁
航空客運售票服務(wù)系統(tǒng)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、M丿;穿城市學(xué)IKZHENG UNlVERSTTY CITY COLLEGE學(xué)生實習(xí)報告課程名稱數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)處理應(yīng)用訓(xùn)練題目名稱航空客運售票服務(wù)系統(tǒng)學(xué)生學(xué)院專業(yè)班級學(xué) 號學(xué)生姓名指導(dǎo)教師2012年2月16日航空客運售票服務(wù)系統(tǒng)【摘要】21世紀(jì)是一個高速、快捷的年代。在這個高速發(fā)展的年代里,速度成了我們追求的目標(biāo);二是提高工作效率;三是降低成本。而且這樣的系統(tǒng)勢必讓用戶易學(xué)、易用,滿 足客戶需求。因此,辦公自動化的高速度、高效率、高便捷、低成本便成了我們的目的,為 此開發(fā)了這個“機(jī)場售票管理系統(tǒng)”。本系統(tǒng)是采用C+開發(fā)的一個管理系統(tǒng)。本系統(tǒng)要解決的是機(jī)場售票中所要解決的問題,包括售票退票功能、

2、預(yù)約等待功能、查詢航線功能、 瀏覽航線客戶功能等。在整個系統(tǒng)中采用隊列、線性鏈表、數(shù)組等存儲方法。在整個系統(tǒng)設(shè)計過程中,嚴(yán)格按照軟件工程設(shè)計標(biāo)準(zhǔn)來設(shè)計系統(tǒng)?!娟P(guān)鍵詞】飛機(jī)信息,隊列,線性鏈表,數(shù)據(jù)結(jié)構(gòu)1內(nèi)容與要求【問題描述】航空客運訂票的業(yè)務(wù)活動包括:查詢航線、機(jī)票預(yù)訂和辦理退票等。試設(shè)計 一個航空客運訂票系統(tǒng),以使上述業(yè)務(wù)可以借助計算機(jī)來完成?!揪唧w要求】設(shè)民航售票處的計算機(jī)系統(tǒng)可以為客戶提供下列各項服務(wù):1 查詢航線:根據(jù)旅客提出的終點站名輸出下列信息:航班號、飛機(jī)號、星期幾飛行,最近一天航班的日期和余票額。2.承辦訂票業(yè)務(wù):根據(jù)客戶提出的要求(日期、航班號、訂票數(shù)額)查詢 該航班票額情況

3、,若尚有余額,則為客戶辦理訂票手續(xù),輸出座位號;若已滿員 或余票額少于訂票額,則需要重新詢問客戶要求。若需要,可預(yù)約登記排隊等候。3承辦退票業(yè)務(wù):根據(jù)客戶提供的情況(日期、航班、退票數(shù)額),為客戶 辦理退票手續(xù),然后查詢該航班是否有人預(yù)約登記,首先詢問排在第一的客戶, 若所退票數(shù)能滿足他的要求,則為他辦理訂票手續(xù),否則依次詢問其他排隊預(yù)約 的客戶?!緦崿F(xiàn)提示】每條航線應(yīng)包含的信息有:終點站名、航班號、飛機(jī)號、飛行日期(星期幾)、乘員定額、余票額、已訂票的客戶名單(包括姓名、訂票額、座位號)和預(yù)約登 記的客戶名單(包括日期、姓名、所需票額)。這最后兩項顯然是一個線性表和 一個隊列。為查找方便、已

4、訂票客戶的線性表應(yīng)按客戶姓名有序,并且,為插入 和刪除方便,應(yīng)以鏈表作存儲結(jié)構(gòu)。由于預(yù)約人數(shù)無法預(yù)料,隊列也應(yīng)以鏈表作 存儲結(jié)構(gòu)。整個系統(tǒng)需匯總各條航線的情況登錄在一張線性表上,由于航線基本不變,可采用順序存儲結(jié)構(gòu),并按航班有序或按終點站名有序。 每條航線是這張 表上的一個記錄,包含上述八個域,其中乘員名單域為指向乘員名單鏈表的頭指 針,預(yù)約登記客戶名單域為分別指向隊頭和隊尾的指針?!緶y試數(shù)據(jù)】自己設(shè)計,但報告上要求寫出多批數(shù)據(jù)測試結(jié)果?!具x做內(nèi)容】當(dāng)客戶訂票要求不能滿足時,系統(tǒng)可向客戶提供到達(dá)同一目的地的其它航線 情況。大家還可以充分發(fā)揮自己的想象力,增加你的系統(tǒng)的功能和其它服務(wù)項目。2總體

5、設(shè)計本系統(tǒng)的總體設(shè)計分為售票退票功能、預(yù)約等待功能、查詢航線功能、瀏覽航線客戶功能等。具體請看該流程圖:查詢航線: Void ChaX un( Char ZdZha n 10,i nt n,main IiSt A)訂票業(yè)務(wù): void din gpiao(i nt day,i nt han gba nhao,i nt din gpiaoe,i nt n,main IiSt A)退票 業(yè)務(wù): void tuipiao(int day,inthangbanhao,inttuipiaoe,char name,intn,ma in IiSt A)瀏覽訂票情況:void liula n(int n)線性

6、鏈表:初始化鏈表:void In itList (LNOde *&H)清除鏈表:void CIearLiSt(LNOde *&H)計算鏈表長度:int Len gthList (LNOde *H)判斷鏈表是否為空:bool EmPtyLiSt (LNOde *H)根據(jù) PoS值取出值:kehu GetLiSt (LNOde *H, int pos)查找鏈表中的數(shù)據(jù):bool Fi ndList (LNode *H, kehu item)遍歷鏈表: void TraverseList(LNode *H) 鏈表中插入數(shù)據(jù): bool InsertList ( LNode *&

7、;H,kehu item, int pos) 鏈表中刪除數(shù)據(jù): bool DeleteList (LNode *&H,kehu &item,int pos) 隊列:void InitQueue (Queue &Q) / 初始化循環(huán)隊列 Qint EmptyQueue (Queue Q) / 判斷隊列是否為空 , 空返回 1, 否則返回 0 void EnQueue (Queue &Q , dengdai item ) /進(jìn)隊列dengdai OutQueue(Queue &Q)/ 出隊列dengdai PeekQueue(Queue Q)/ 取出隊列中第

8、一個數(shù)據(jù) void ClearQueue(Queue &Q) / 清除該隊列3 詳細(xì)設(shè)計結(jié)構(gòu)定義:typedef structchar name10;/ 客戶姓名int dingpiaoe;/ 訂票額dengdai; / 預(yù)約等待的客戶typedef structchar name10;/ 客戶姓名int dingpiaoe;/ 訂票額int zuoweihao; / 座位號kehu; / 訂到票的客戶typedef structchar zdzhan10; / 終點站名int hangbanhao; / 航班號int week; / 星期int day; / 日期int yupiao

9、; / 余票int dinge; / 成員定額LNode *pass; / 訂到票的客戶Queue wait; / 等待預(yù)約的客戶ElemType;插入航線:先提示要輸入的航線數(shù)量,再用一個FoR循環(huán)將所有輸入的數(shù)據(jù)存入數(shù)組;查詢航線:用一個FOR循環(huán),將輸入的要查詢的信息與數(shù)組中的所有航線信息作比較,若找到相同的終點站,則全部將他們輸出。訂票業(yè)務(wù):用一個FOR環(huán),將輸入的要訂票的信息與數(shù)組中的所有航線信息作比較,若找到與輸入信息相同的航線,則輸出“找到您所要訂的航班! ”,之后再輸入客戶姓名,再將以 上輸入信息放入 2 個結(jié)構(gòu): 預(yù)約等待的客戶和訂票客戶。 再判斷該航班是否有那么多票夠該 客

10、戶買,若夠則輸出座位號,若不夠,則輸出: “該航班余票不足,是否預(yù)約登記排隊等候, 請選擇YES/NO,若客戶選擇 YES則將該客戶信息放入隊列。若客戶選擇NQ則返回選擇菜單。如果在循環(huán)結(jié)束后,還未找到該航班,則輸出: “找不到您所要訂的航班! ”退票業(yè)務(wù):用一個FOR循環(huán),將輸入的要退票的信息與數(shù)組中的所有航線信息作比較,若找到與輸入信息相同的航線, 則輸出“找到了您的航班! ”,再判斷輸入的退票額是否符合他的訂票額,若大于訂票額,則輸出: “您要退的票大于您訂的票,退票不成功!請重新輸入退 票額”并返回選擇菜單。若不大于,則輸出“退票成功! ”并輸出他剩余的票數(shù)。若票數(shù)為 0,則刪除該客戶

11、信息。退票結(jié)束后,詢問在預(yù)約等待的顧客,從隊列頭開始,查找與余票 額相符的顧客信息,找到則輸出“XX客戶的座位號為 X”,找不到則讓他們繼續(xù)等待。如果在循環(huán)結(jié)束后,還未找到該航班,則輸出: “您沒有該航班的票! ” 瀏覽訂票情況: 首先讓使用者輸入要查詢的航線信息( 日期、 航班號 ) 。然后利用線性鏈表的的遍歷功能,輸出要查詢航班客戶信息。4 程序測試測試數(shù)據(jù):航線信息:終點站航班號星期日期hangzhou1120120101hangzhou2220120102hangzhou3320120103beijing4120120101beijing5320120103tianjing642012

12、0104tianjing7620120106hangzhou8120120101hangzhou9320120103sichuan10220120102sichuan11720120107jiangsu12120120108jiangshongqihongqi行正確:C: DocBents a>d SettiiigsVkdBinistratorUK面數(shù)垂奘構(gòu)課程設(shè)計MUBCMBJK結(jié)構(gòu)課=R票況* 青卄S置線務(wù)備 -Dfl Afl4i STIH-M WA-I 卄 sni0-卄 壽丄2: H 十 衛(wèi) * 易FMI

13、BI hangzhou han02bou bangzbou heijing beijing tian Jing tlanding hangzhou hangzhou SiChUan SiChUan J IangSU JiangSU ChOngqin ChOngqin1231341011121314151 :3 :2712Q - AV2A12R1R1 2R12R1A2 2012RlR3 20120101 20120103 20120104 20120106 20120101 20120103 20120102 20120107 20120108 20120109 20120105 2012010

14、6!益研號.星期幾日期JtfJxl-M-M-M-W*M!T 干玻酉1 .ffi2 筍旬航線 遑業(yè)務(wù)心票業(yè)務(wù) 胡克訂稟情況 0lfi 出3.4.M*MM,f ,M*>*)t*X M*) Hf * XX XX< >f f Xf 開< X « X < X陀你想去的終隣嘶1陰羽吵 纟冬占站名 hang2hou hangzhou hangzhou hangzhou hangzhou日朋2012010120120102201201032012010120120103-M-MM*M*1.2 查詛!肌線31墓並務(wù)4 qR =?q* 二瀏寬訂黛青況0.18LtI帳輸.入您

15、想訂票的日期、肌班號、訂票頷2U1201U1 1 35遼所旻訂的航班! 請輸入佐於姓名:aa 應(yīng)齣座位號為1*歡迎使用航三客込胃器服夯系*<w< J<< Jt姓名3.*次迎使用* 1* 1 ”幽達(dá)舊聖服務(wù)羨統(tǒng) 請選拝橫旬項宜4退弟業(yè)臺 匚瀏曆訂禦情況Q 道出CCaai*MMMO<WM444 耳 乂 JLJMM2R- Sm1 1 IHSWl 松隹座杭號為葩,* R- - -'-r -ress any Key to COntinUeVESc 匚:JD 0 EUBents a<l如況 l苕 t 杲肌肌業(yè)業(yè)門H - - 丄府12 3 4 5-期、航班號r訂竽

16、額該航班余票不足,是否預(yù)約登記井V民請選擇皿用O J J 4 J /l- -ififfi 3.1J業(yè)金 4-退稟業(yè)蚤 5顓訂彙惰況 乩很出售輸入您想退票時日期、航班退票額、Q012ll 1 30 aaf5戶系 S1 訂 fea=U6jfe =If<E2 0L¾.w爰查詢旳航線信息£日期*機(jī)班號人20120101 1 YJS!2510目 報項霽晏; 證入a嚙菜單輸入錯誤:丨口心1": .D<»ciLBut 1E ajdl SattiTkgszKJLieiiiki <r t or K V¾>¾程"計XE&

17、#190;g.數(shù)楓結(jié)¾況 青割頂 惰 聲一-¾BI! 查訂½l.訂票時找不到航班:tejsijiStiajigtian JinganghouK ng?Ihinllr1iAn4tMr(MroeSichuan JiLar9u i 亶 OngQLLHuriyQini FiUIiyqifll CJJXJBjJM4 1 2012eil5 3 2012ei36 4 01201l ? 6 2012l68 1 2012ll9 3 2i12l3IH 2 21 2Hll211 7 2612010712 1 l3010S13 2 261201096®15衣統(tǒng)L R目 0 運e

18、祝 情 n- 坐訂出 ¾-WI 1訂很il0-Inl情輸入想想訂票的日期、航班號、訂票額l268e8 2 15k到播所寰訂的航班I退票時找不到航班:構(gòu)In2d3蓉専票脈務(wù)系統(tǒng) J務(wù)頂目 -=迴血線 37 務(wù) 4.業(yè)玄 諭收訂鯛況0.<½M-請重新輸A遇票葡 吞售票J5勝黑統(tǒng)* 制務(wù)項目J-MW4W4MWWI*歡迪-Inl 刈0' *C 2 ,Do C-EL.i. jl1 Mh. ,i.Jm i -左 ,¾ . < 卓"6 * ¾ l+ I <s Ira £ V.輸入的退票額大于訂票額:目香訂M瀏.Ift請輸f

19、i票的日期、航班號.逞票額、姓乞 912eiRl 1 術(shù) t廳您內(nèi)肌班! 悠聲還曲票壬于您訂的祟.*歡迎 間宦空脊Jl->KM2 sll囂澤情祝I住出障輸人您想訂弟的日期、航班號、訂累額 29126808 2 15我不到愜所器訂的航班I . MMS 航空 g ÷*w*I-M-MM2 .請輸入憊愛退票的日期、航班號、退票額姓名B12S88 2 15 SJd您沒有該航班的票I5總結(jié)基本上能安全的運行,具備的功能符合題目的要求。程序?qū)懙倪€算簡練,結(jié)構(gòu)清晰,各 個模塊的分工和功能明確。21 世紀(jì)是一個高速、快捷的年代。在這個高速發(fā)展的年代里,速度成了我們追求的目 標(biāo);二是提高工作效率;

20、三是降低成本。而且這樣的系統(tǒng)勢必讓用戶易學(xué)、易用,滿足客戶 需求。因此,辦公自動化的高速度、高效率、高便捷、低成本便成了我們的目的,為此開發(fā) 了這個“機(jī)場售票管理系統(tǒng)” 。本系統(tǒng)可以大大簡化售票,訂票,查詢,統(tǒng)計等十分繁瑣的工作,各個部門相互協(xié)調(diào), 簡化辦公環(huán)節(jié),提高工作效率,便于管理,各種數(shù)據(jù)可以一目了然。 這次系統(tǒng)的設(shè)計從最開始的需求分析, 可行性研究, 到系統(tǒng)的整體設(shè)計, 包括概要設(shè)計和詳 細(xì)設(shè)計的一個整體過程, 本人真正明白了要做一個軟件的難度, 特別是要做一個真正可用的 軟件,就更難了。經(jīng)過這一個星期的實踐編程,我收獲很多,不僅鞏固了以前的知識:特別是像隊列、鏈 表、線性表、數(shù)組等等

21、,還從同學(xué)、網(wǎng)上學(xué)到了很多其他知識,并且對調(diào)試更加熟悉。不過 這次的編程還是比較順利的, 沒有出現(xiàn)特別大的錯誤, 特別是那種出一點錯就要改很久的錯 誤。這次實踐過程中主要遇到的錯誤有以下一些:1. 一開始編的線性鏈表的頭文件是帶表頭附加結(jié)點的, 但是在調(diào)用存入客戶的座位號的時 候,是不需要表頭附加結(jié)點的,不然出現(xiàn)的錯誤就是每個人的座位號錯誤,尤其是第一 個客戶,是個非常大的負(fù)數(shù)。所以為了修改該錯誤,就要重新編寫一個不帶表頭附加結(jié) 點的線性鏈表。2. 一開始將數(shù)組 mai nlist A,定義成局部變量。但是由于在子函數(shù)中要多次使用A,有時候又會忘記定義,所以就把A當(dāng)作全局變量。3. 有時候也會

22、出現(xiàn)一些不常用的小錯誤, 就是做比較的時候還是很習(xí)慣的用 “=”,“ >”“ <”等,但是在這個結(jié)構(gòu)很多的程序里,很多都是字符型的,所以要記得使用STRlNG的功能去做比較和賦值等。4. 還有這次編程的一個難點,就是處理預(yù)約等待的客戶。后來從找資料和詢問同學(xué)的想法 之后知道了可以用一個新的隊列,在詢問預(yù)約等待的客戶時不符合的就放入新的隊列, 符合就進(jìn)入訂票的鏈表,有了思路之后完成的就能很快了。參考文獻(xiàn)1 徐孝凱,數(shù)據(jù)結(jié)構(gòu)實用教程 M ,清華大學(xué)出版社, 2006年 9月2 牛義德 . 帶刺的紅玫瑰 . 航空電子售票系統(tǒng) . 中國電子商務(wù), 20003 伍俊良 .VisualFoxp

23、ro. 閔紅梅 . 課程設(shè)計與系統(tǒng)開發(fā)案例 . 北京:清華大學(xué)出版社, 20034 張 龍 .school著 . 晏 海 華 譯 . 軟 件 工 程 導(dǎo) 論 第 四 版 . 北 京 清 華 大 學(xué) 出 版 ,2003.11-13,25Judy5 c+ 編程- 從問題分析到程序設(shè)計實驗指導(dǎo)書 .電子工業(yè)出版社附錄test0.cpp:#include<iostream.h> #include<string.h>#include<stdlib.h>#include<stdio.h>typedef structchar name10;/客戶姓名int d

24、ingpiaoe;/訂票額dengdai;/ 預(yù)約等待的客戶 typedef structchar name10;/客戶姓名int dingpiaoe;/訂票額int zuoweihao;/座位號kehu;/ 訂到票的客戶 #include"Queue.h" #include"LinkList.h" typedef structchar zdzhan10;/ 終點站名 int hangbanhao;/ 航班號int week;/ 星期int day;/ 日期int yupiao;/ 余票int dinge;/ 成員定額LNode *pass;/ 訂到票的

25、客戶Queue wait;/ 預(yù)約等待的客戶 ElemType;const int MaxSize=200; typedef ElemType mainlistMaxSize; mainlist A;#include"a.h" void main()int n=0,i,j,day,hangbanhao,dingpiaoe,tuipiaoe,k;char zdzhan10,name10;/ 終點站名while(1)printf("* 歡迎使用航空客運售票服務(wù)系統(tǒng) *n");printf("*printf("*1.printf("

26、;*2.printf("*3.printf("*4.printf("*5.printf("* 0.請選擇相關(guān)服務(wù)項目*n");插入航線*n");查詢航線*n");訂票業(yè)務(wù)*n");退票業(yè)務(wù)*n");瀏覽訂票情況*n");退出 *n");printf(H*n");cin>>j;if(j=1)cout<<" 請輸入您想插入的航線信息數(shù): "cin>>k;"<<endl;cout<<"

27、; 請依次輸入航線信息 : 終點站名、航班號、星期幾、日期for(i=0;i<k;i+)cin>>Ai.zdzhan;cin>>Ai.hangbanhao;cin>>Ai.week;cin>>Ai.day;Ai.yupiao=50;Ai.dinge=50;InitQueue(Ai.wait);InitList(Ai.pass);n=n+k;else if(j=2)cout<<" 請輸入你想去的終點名: "cin>>zdzhan;chaxun(zdzhan,n,A);else if(j=3)cout

28、<<" 請輸入您想訂票的日期、航班號、訂票額 "<<endl; cin>>day>>hangbanhao>>dingpiaoe;dingpiao(day,hangbanhao,dingpiaoe,n,A);else if(j=4)"<<endl;cout<<" 請輸入您想退票的日期、航班號、退票額、姓名 cin>>day>>hangbanhao>>tuipiaoe>>name; tuipiao(day,hangbanhao,

29、tuipiaoe,name,n,A);else if(j=5)liulan(n);else if(j=0)break;elseprintf(" 輸入錯誤! n");a.h:void chaxun(char zdzhan10,int n,mainlist A)int i,j=0;printf(" 終點站名 t 航班號 t 星期幾 t 日期 t余票 n");for(i=0;i<n;i+)if(strcmp(Ai.zdzhan,zdzhan)=0) cout<<Ai.zdzhan<<"t"<<Ai.

30、hangbanhao<<"t"<<Ai.week<<"t" <<Ai.day<<"t"<<Ai.yupiao<<endl;void dingpiao(int day,int hangbanhao,int dingpiaoe,int n,mainlist A)int i,count;kehu temp;dengdai item;char k10; for(i=0;i<n;i+) if(day=Ai.day&&hangbanhao=A

31、i.hangbanhao) cout<<" 找到您所要訂的航班! "<<endl; temp.dingpiaoe=dingpiaoe; item.dingpiaoe=dingpiaoe;cout<<" 請輸入您的姓名: " cin>>; strcpy(,); if(dingpiaoe<=Ai.yupiao)count=Ai.dinge-Ai.yupiao+1; printf(" 您的座位號為 %dn",count); temp.

32、zuoweihao=count; Ai.yupiao=Ai.yupiao-dingpiaoe; InsertList(Ai.pass,temp,0);else cout<<" 該 航 班 余 票 不 足 , 是 否 預(yù) 約 登 記 排 隊 等 候 , 請 選 擇 YES/NO"<<endl;cin>>k;if(strcmp(k,"YES")=0) EnQueue(Ai.wait,item);else return;break; if(i>=n) cout<<" 找不到您所要訂的航班! &qu

33、ot;<<endl;void tuipiao(int day,int hangbanhao,int tuipiaoe,char name,int n,mainlist A) int i,count;Queue temp;dengdai item;kehu item1;LNode *p;InitQueue(temp);for(i=0;i<n;i+)if(day=Ai.day)&&(hangbanhao=Ai.hangbanhao) p=Ai.pass; while(p)if(!strcmp(name,p->)cout<<&qu

34、ot; 找到了您的航班! "<<endl; if(tuipiaoe>p->data.dingpiaoe)cout<<" 您要退的票大于您訂的票,退票不成功!請重新輸入退票額 "<<endl;return;elseAi.yupiao=Ai.yupiao+tuipiaoe; count=p->data.dingpiaoe-tuipiaoe;Printf("退票成功,您還有d張票n",count);if(p->data.dingpiaoe) P->data.dingPiaoe=coun

35、t;elseDeleteList (P,item1,-1);while(!EmPtyQueue(Ai.wait)item=PeekQueue(Ai.wait);if(item.dingpiaoe>Ai.yupiao)EnQueue(temp,OutQueue(Ai.wait);elseitem1.dingpiaoe=item.dingpiaoe; strcpy(,); item1.zuoweihao=Ai.dinge-Ai.yupiao+1; InsertList(Ai.pass,item1,0);OutQueue(Ai.wait);Ai.yupia

36、o-=item.dingpiaoe;cout<<<<" 客 戶 "<<" 系 統(tǒng) 已 成 功 訂 了"<<item1.dingpiaoe<<" 張票 , 座位號為 :"<<item1.zuoweihao<<endl;Ai.wait=temp;return;p=p->next;if(i>=n)cout<<" 您沒有該航班的票! "<<endl;void liulan(int n)

37、int day,hangbanhao;cout<<" 請輸入您要查詢的航線信息 ( 日期、航班號 ) : "cin>>day>>hangbanhao;for(int t=0;t<n;t+)if(day=At.day)&&(hangbanhao=At.hangbanhao)printf(" 客戶號 t 訂票額 n");TraverseList(At.pass);LinkList.h:typedef struct Node kehu data; struct Node *next; LNode;voi

38、d InitList (LNode *&H)H = NULL;void ClearList(LNode *&H) /釋放動態(tài)申請的內(nèi)存空間當(dāng)前結(jié)點指針與后繼結(jié)點指針LNode *cp, *np; / cp=H; while(cp!=NULL) / 按順序遍歷單鏈表,釋放每個結(jié)點np=cp->next; free(cp); cp=np; /保存下一個結(jié)點使下一個結(jié)點成為當(dāng)前結(jié)點H=NULL; / 置單鏈表為空int LengthList (LNode *H)LNode *p=H; / 用來遍歷鏈表結(jié)點int i=0; / 用來統(tǒng)計結(jié)點個數(shù) while(p!=NULL)i+;

39、p=p->next;return i;bool EmptyList (LNode *H)return H=NULL;kehu GetList (LNode *H, int pos)LNode *p=H; / 用來遍歷鏈表結(jié)點int i=0; / 用來統(tǒng)計已查找的結(jié)點個數(shù) if (pos<1) cerr<<"pos is out range!"<<endl;exit(1);while (p!=NULL) / 遍歷到第 pos 個結(jié)點或最后一個結(jié)點為止 i+;if (i=pos) break;p=p->next; if (p!=NULL

40、) return p->data;else /pos 值大于表長 cerr<<"pos is out range!"<<endl;exit(1);bool FindList (LNode *H, kehu item)LNode *p=H; / 用來遍歷鏈表結(jié)點 while(p!=NULL)if (strcmp(p->,)=0) return true;else p=p->next;return false;void TraverseList(LNode *H)LNode *p=H; while (

41、 p!=NULL ) cout<<p-><<"t"<<p->data.dingpiaoe<<endl; p=p->next; cout<<endl;bool InsertList ( LNode *&H,kehu item, int pos)LNode *newptr, *cp, *ap;if (pos<-1)cout<<" 參數(shù)不合法 "<<endl;return false;ZZ尋找新結(jié)點的插入位置,使得在 ap和CP

42、間插入 cp=H;aP=NULL;if(Pos = 0) ZZ按值有序插入情況while ( CP != NULL)if (strCmP(,CP->) break;else aP=CP;CP=CP->next;else if( Pos = -1 ) ZZ在表尾插入情況while ( CP != NULL) aP=CP;CP=CP->next;else ZZ按指定位置插入情況int i=0;while(CP!= NULL)i+;if (i=Pos)break;elseaP=CP;CP=CP->next;if (CP=NULL&&

43、amp;i+1<Pos)Cout<<" 參數(shù)不合法 "<<endl;return false;ZZ 完成新結(jié)點的動態(tài)分配 , 賦值與插入 newPtr=(LNode*)malloC(sizeof(LNode); newPtr->data=item;if (aP=NULL) ZZ 插入到表頭 newPtr->next=H; H=newPtr;else / 插入到 ap 和 cp 結(jié)點之間newptr->next=cp;ap->next=newptr;return true;bool DeleteList (LNode *&

44、amp;H,kehu &item,int pos)LNode *cp,*ap;if (H=NULL)cerr<< " 空表,不能刪除 ! "<<endl;return false;if (pos<-1) cout<<" 參數(shù)不合法 !"<<endl;return false;/尋找刪除位置,使得 CP指向待刪除結(jié)點,ap指向CP的前一個結(jié)點 cp=H;aP=NULL;if(Pos = 0)/按值刪除情況while ( CP != NULL) if (!strCmP(,CP->)break;else aP=CP;CP=CP->next;if(CP=NULL)Cout<< " 沒有相應(yīng)結(jié)點可刪除 !"<<endl;return false;e

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論