版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)</b></p><p> 題 目 二叉樹(shù)的遍歷算法分析與設(shè)計(jì) </p><p> 學(xué)生姓名 專(zhuān)業(yè)班級(jí) 計(jì)算機(jī)12-1 </p><p> 指導(dǎo)教師 職 稱(chēng) 副教授 </p><p> 所在單位
2、 信息科學(xué)系 </p><p> 教學(xué)部主任 </p><p> 完成日期 2014年1月10日</p><p> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)任務(wù)書(shū)</p><p><b> 一、任務(wù)及要求:</b></
3、p><p> 設(shè)計(jì)(研究)任務(wù)和要求</p><p> 研究?jī)?nèi)容:二叉樹(shù)的遍歷算法分析與設(shè)計(jì)</p><p><b> 任務(wù)和要求:</b></p><p> (1)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)知識(shí),掌握數(shù)據(jù)結(jié)構(gòu)典型的算法的使用。</p><p> ?。?)對(duì)指導(dǎo)教師下達(dá)的題目進(jìn)行系統(tǒng)分析。</p&
4、gt;<p> ?。?)根據(jù)分析結(jié)果完成系統(tǒng)設(shè)計(jì)。</p><p> ?。?)編程:在計(jì)算機(jī)上實(shí)現(xiàn)題目的代碼實(shí)現(xiàn)。</p><p> ?。?)完成對(duì)該系統(tǒng)的測(cè)試和調(diào)試。</p><p> (6)提交課程設(shè)計(jì)報(bào)告。</p><p> 要求完成課程設(shè)計(jì)報(bào)告3000字以上(約二十頁(yè))。</p><p>
5、完成若干綜合性程序設(shè)計(jì)題目,綜合設(shè)計(jì)題目的語(yǔ)句行數(shù)的和在100行語(yǔ)句以上。</p><p><b> 2.原始依據(jù)</b></p><p> 結(jié)合數(shù)據(jù)結(jié)構(gòu)課程中的基本理論和基本算法,正確分析出數(shù)據(jù)的邏輯結(jié)構(gòu),合理地選擇相應(yīng)的存儲(chǔ)結(jié)構(gòu),并能設(shè)計(jì)出解決問(wèn)題的有效算法。提高程序設(shè)計(jì)和調(diào)試能力。學(xué)生通過(guò)上機(jī)實(shí)習(xí),驗(yàn)證自己設(shè)計(jì)的算法的正確性。學(xué)會(huì)有效利用基本調(diào)試方法,迅速找
6、出程序代碼中的錯(cuò)誤并且修改。</p><p><b> 3.參考題目:</b></p><p><b> 二、工作量</b></p><p> 2周(10個(gè)工作日)時(shí)間</p><p><b> 三、計(jì)劃安排</b></p><p> 第1個(gè)工
7、作日:查找相關(guān)資料、書(shū)籍,閱讀示例文檔,選擇題目。</p><p> 第2個(gè)工作日-第3個(gè)工作日:設(shè)計(jì)程序結(jié)構(gòu)、模塊圖。</p><p> 第4個(gè)工作日-第9個(gè)工作日:完成程序的編碼,并且自己調(diào)試、測(cè)試。穿插進(jìn)行課程設(shè)計(jì)報(bào)告的撰寫(xiě)。</p><p> 第10個(gè)工作日:上交課程設(shè)計(jì)報(bào)告,由教師檢查軟件測(cè)試效果、檢查課程設(shè)計(jì)報(bào)告,給出學(xué)生成績(jī)。</p>
8、<p><b> 指導(dǎo)教師簽字:</b></p><p> 2013年 12月 30日</p><p> 題目一:居民信息管理系統(tǒng)(以二叉樹(shù)建立)算法分析與設(shè)計(jì)</p><p><b> 1.需求分析</b></p><p> 此系統(tǒng)是根據(jù)用戶(hù)的需求,主要是對(duì)居民的基本信息進(jìn)
9、行登記,統(tǒng)計(jì),并對(duì)居民信息進(jìn)行管理。系統(tǒng)除了以上功能外還要有基本的管理工作,例如添加居民信息,修改居民信息,刪除居民信息等最基本的操作,還有就是通過(guò)本系統(tǒng)還可以統(tǒng)計(jì)出在在各個(gè)教育程度的人數(shù),方便應(yīng)用者更加的快捷的做出統(tǒng)計(jì),提高工作效率。</p><p><b> 2.概要設(shè)計(jì)</b></p><p> 本系統(tǒng)中定義jumininfo結(jié)構(gòu)體類(lèi)型用于描述居民信息。ju
10、mininfo結(jié)構(gòu)體類(lèi)型定義格式如下:</p><p> typedef struct</p><p><b> {</b></p><p> char num[18];</p><p> char name[21];</p><p> char sex[5]; </p>
11、<p> char age[4];</p><p> char xueli[11];</p><p> char addr[51];</p><p> char tel[21];</p><p> }jumininfo;</p><p> 其中num用于描述居民的身份證號(hào)信息,name用于描述居
12、民的姓名信息,sex用于描述居民的性別信息,age用于描述居民的年齡信息,xueli用于描述居民的教育程度信息,addr用于描述居民的地址信息,tel用于描述居民的聯(lián)系方式信息。</p><p> 本系統(tǒng)中定義nodetype結(jié)構(gòu)體類(lèi)型用于建立二叉樹(shù)的節(jié)點(diǎn)。nodetype結(jié)構(gòu)體類(lèi)型定義格式如下:</p><p> typedef struct node</p><
13、p><b> {</b></p><p> jumininfo jumin;</p><p> struct node *L;</p><p> struct node *R;</p><p> }nodetype;</p><p> 其中jumin用于存儲(chǔ)居民個(gè)人信息,*L為指
14、向左孩子的指針,*R為指向右孩子的指針。</p><p><b> 3.詳細(xì)設(shè)計(jì)</b></p><p> 依據(jù)需求分析結(jié)果,居民信息管理系統(tǒng)系統(tǒng)可以分為四個(gè)模塊:居民信息查詢(xún)模塊、居民信息刪除模塊、居民信息添加模塊和居民信息修改模塊。如下圖所示:</p><p> 1. 居民信息查詢(xún)模塊</p><p> 居民
15、信息查詢(xún)模塊主要實(shí)現(xiàn)的功能是居民信息的快速查詢(xún)。依據(jù)用戶(hù)輸入的身份證號(hào)查找對(duì)應(yīng)的居民信息。</p><p> 2. 居民信息刪除模塊</p><p> 居民信息刪除模塊主要實(shí)現(xiàn)的功能是對(duì)特定居民信息的刪除。</p><p> 3. 居民信息添加模塊</p><p> 居民信息添加模塊主要是閑的功能是對(duì)固定數(shù)量的居民信息的添加。<
16、/p><p> 4. 居民信息修改模塊</p><p> 居民信息修改模塊主要實(shí)現(xiàn)的功能是對(duì)特定居民信息的修改。</p><p><b> 5.系統(tǒng)總體流程</b></p><p><b> 4.調(diào)試分析</b></p><p> 1. 程序設(shè)計(jì)及過(guò)程</p>
17、;<p> 一、設(shè)想將上一次單鏈表的課程設(shè)計(jì)所編寫(xiě)的成程序改寫(xiě),定義成為二叉樹(shù)結(jié)構(gòu)類(lèi)型。</p><p> 結(jié)果:失敗,單鏈表指針指向與二叉樹(shù)完全不同,使整個(gè)程序指針結(jié)構(gòu)改變工作量變得很大,短時(shí)間內(nèi)一人無(wú)法完成。</p><p> 二、參考書(shū)本,重新定義類(lèi)型結(jié)構(gòu),取單鏈表課程設(shè)計(jì)部分顯示函數(shù)進(jìn)行重新編輯。</p><p> 結(jié)果:比較成功,建立
18、了一個(gè)以二叉樹(shù)結(jié)構(gòu)為基礎(chǔ)的管理系統(tǒng)。</p><p> 缺點(diǎn):將文件存入文件和從文件讀取沒(méi)有實(shí)現(xiàn),二叉樹(shù)的寫(xiě)入與單鏈表區(qū)別較大,已經(jīng)找出將樹(shù)存入文件的方法,但讀取程序未能編寫(xiě)成功,因此在本次課程設(shè)計(jì)中未加入寫(xiě)入文件模塊。</p><p> 目前程序中未能實(shí)現(xiàn)的功能除了從文件讀取功能外,還有查找功能。查找功能的程序代碼已經(jīng)編寫(xiě)完成,但是實(shí)際測(cè)試中未能達(dá)到與其功能,具體問(wèn)題仍然在分析和De
19、bug中,本次課程設(shè)計(jì)不便列舉。由于查找功能的缺失,使二叉樹(shù)節(jié)點(diǎn)信息的刪除和修改功能也未實(shí)現(xiàn)。但本次課程設(shè)計(jì)的主要目的是成功的建立二叉樹(shù)并將其遍歷,鑒于此功能已經(jīng)實(shí)現(xiàn),可以基本確定此次課程設(shè)計(jì)的基本目的已經(jīng)達(dá)到。</p><p> 5.測(cè)試結(jié)果及運(yùn)行效果</p><p> 進(jìn)入主菜單,按數(shù)字鍵選擇所需功能:</p><p><b> 選擇錄入居民信息
20、:</b></p><p> 當(dāng)輸入身份證號(hào)不是18位時(shí):</p><p><b> 錄入成功時(shí):</b></p><p> 輸入“#”結(jié)束錄入,返回主菜單。</p><p><b> 選擇顯示居民信息:</b></p><p> 系統(tǒng)自動(dòng)中序遍歷已建成
21、的二叉樹(shù)。</p><p><b> 選擇插入居民信息:</b></p><p> 優(yōu)點(diǎn):系統(tǒng)自動(dòng)選擇二叉樹(shù)上合適的位置插入信息</p><p> 缺點(diǎn):每次只能插入一個(gè)居民信息</p><p> 題目二:居民信息管理系統(tǒng)(單鏈表建立含各種排序)算法分析與設(shè)計(jì)</p><p><b&
22、gt; 1.需求分析</b></p><p><b> 與題目一相同</b></p><p><b> 2.概要設(shè)計(jì)</b></p><p> 本系統(tǒng)中定義jumin結(jié)構(gòu)體類(lèi)型用于描述居民信息。jumin結(jié)構(gòu)體類(lèi)型定義格式如下:</p><p> struct jumin<
23、;/p><p><b> {</b></p><p><b> int num;</b></p><p> char name[20];</p><p> char sex; </p><p><b> int age;</b></p>
24、;<p> char xueli[30];</p><p><b> int wage;</b></p><p> char addr[30];</p><p> char tel[20];</p><p> }jumin[100]</p><p> 其中num用于描述居
25、民的戶(hù)籍號(hào)信息,name用于描述居民的姓名信息,sex用于描述居民的性別信息,age用于描述居民的年齡信息,xueli用于描述居民的教育程度信息,wage用于描述居民的收入信息,addr用于描述居民的地址信息,tel用于描述居民的聯(lián)系方式信息。</p><p> 本系統(tǒng)中定義rectype結(jié)構(gòu)體類(lèi)型用于建立鏈表,定義格式如下:</p><p> typedef struct</p
26、><p><b> {</b></p><p><b> int key;</b></p><p> jumininfo info;</p><p><b> }rectype;</b></p><p><b> 3.詳細(xì)設(shè)計(jì)</b
27、></p><p><b> 3.1主函數(shù)模塊</b></p><p> 主函數(shù)模塊主要提供本程序運(yùn)行的基礎(chǔ)以及供用戶(hù)選擇子函數(shù)功能。</p><p> 3.1.1. 主函數(shù)模塊描述</p><p> 由homepage函數(shù)顯示功能菜單,由用戶(hù)選擇需要的功能并連接到對(duì)應(yīng)的功能函數(shù)。</p>&
28、lt;p> 3.1.2. 主函數(shù)模塊設(shè)計(jì)實(shí)現(xiàn)</p><p> 進(jìn)入程序運(yùn)行結(jié)果如下截圖:</p><p> 若用戶(hù)輸入1-7以外的字符,則如下圖:</p><p> 3.2錄入居民信息子模塊</p><p> 錄入居民信息子模塊主要提供用戶(hù)錄入居民信息至系統(tǒng)指定文件并存儲(chǔ)的功能。</p><p>
29、3.2.1. 錄入居民信息子模塊描述</p><p> 經(jīng)由main函數(shù)進(jìn)入錄入函數(shù),用戶(hù)根據(jù)系統(tǒng)提示按步驟輸入居民信息。</p><p> 3.2.2. 錄入居民信息子模塊流程框圖</p><p> 3.2.3. 錄入居民信息子模塊設(shè)計(jì)實(shí)現(xiàn)</p><p> 進(jìn)入程序運(yùn)行結(jié)果如下截圖:</p><p> 3
30、.3修改居民信息子模塊</p><p> 修改居民信息子模塊主要提供用戶(hù)修改已錄入的居民信息并存儲(chǔ)改變的功能。</p><p> 3.3.1. 修改居民信息子模塊描述</p><p> 經(jīng)由main函數(shù)進(jìn)入修改函數(shù),用戶(hù)根據(jù)系統(tǒng)提示按步驟選擇需要修改的項(xiàng)目并修改。</p><p> 3.3.2. 修改居民信息子模塊流程框圖</p
31、><p> 3.3.3. 修改居民信息子模塊設(shè)計(jì)實(shí)現(xiàn)</p><p> 當(dāng)進(jìn)入系統(tǒng)模塊時(shí)未讀取到數(shù)據(jù)庫(kù)時(shí)</p><p> 5秒后系統(tǒng)自動(dòng)返回主菜單。</p><p> 進(jìn)入系統(tǒng)成功讀取數(shù)據(jù)庫(kù):</p><p> 3.4 寫(xiě)入/讀取信息子模塊</p><p> 寫(xiě)入/讀取信息子模塊主要提
32、供用戶(hù)在錄入和編輯信息后將信息存入文件以便下次運(yùn)行程序繼續(xù)讀取信息的功能。</p><p> 此模塊通常在后臺(tái)運(yùn)行,只在讀取或?qū)懭胛募l(fā)生錯(cuò)誤時(shí)顯示"文件打開(kāi)錯(cuò)誤!請(qǐng)先錄入信息列表。系統(tǒng)將自動(dòng)返回主菜單,請(qǐng)稍候... ",并在5秒后自動(dòng)返回主菜單。</p><p> 在進(jìn)入各模塊時(shí)讀取錯(cuò)誤如下:</p><p> 3.5 按年齡直接插入排序
33、子模塊</p><p> 按年齡直接插入排序子模塊主要提供用戶(hù)在存儲(chǔ)信息后將信息按年齡由小到大順序排序的功能。</p><p> 目前還存在在每次排序完成后會(huì)在數(shù)據(jù)列表最前端插入一組空數(shù)據(jù)的BUG,且到目前為止并未修復(fù)。</p><p> 3.6 按戶(hù)籍號(hào)直接選擇排序子模塊</p><p> 按戶(hù)籍號(hào)直接選擇排序子模塊主要提供用戶(hù)在存
34、儲(chǔ)信息后將信息按戶(hù)籍號(hào)由小到大順序排序的功能。</p><p> 目前還存在在每次排序完成后會(huì)在數(shù)據(jù)列表最前端插入一組空數(shù)據(jù)的BUG,且到目前為止并未修復(fù)。</p><p><b> 總 結(jié)</b></p><p> 課程設(shè)計(jì)終于成功的收尾了,雖然有些疲憊但是頗有收獲,我鞏固了所學(xué)到的知識(shí),并動(dòng)手實(shí)踐,更好地理解和運(yùn)用了數(shù)據(jù)結(jié)構(gòu)的知
35、識(shí)。數(shù)據(jù)結(jié)構(gòu)學(xué)了近一學(xué)期,很多知識(shí)掌握得不是很牢,通過(guò)平時(shí)的復(fù)習(xí)自己也理解了一些,但讓我有更深的理解和更好的認(rèn)識(shí)則是在這個(gè)課程設(shè)計(jì)。</p><p> 通過(guò)本次課程設(shè)計(jì),復(fù)習(xí)了上學(xué)期的C語(yǔ)言編程知識(shí),學(xué)會(huì)了怎么去借鑒別人方法 和經(jīng)驗(yàn),知道了如何整理材料是設(shè)計(jì)最快的完成這為以后設(shè)計(jì)畢業(yè)論文打下了基礎(chǔ)。</p><p> 此次課程設(shè)計(jì)鑒于上次的經(jīng)驗(yàn)我選擇了獨(dú)立一人一組。覺(jué)得雖然程序編寫(xiě)有些
36、吃力,但是一個(gè)人完成程序時(shí)的成就感也加倍了。</p><p> 由于臨近期末,復(fù)習(xí)任務(wù)緊張,這次的課程設(shè)計(jì)完成的還不是很周密,還有很多可以完善的地方,但總的來(lái)說(shuō)已經(jīng)達(dá)到我之前預(yù)想的程序效果。</p><p> 在這次課程設(shè)計(jì)中,我還幫助了其他小組課程設(shè)計(jì)的完成,見(jiàn)到了很多的程序錯(cuò)誤,并幫他們改正,這也鍛煉了我個(gè)人在程序debug方面的能力。</p><p>
37、還著愉快的心情,數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)結(jié)束了。希望在這次課程設(shè)計(jì)中所總結(jié)的經(jīng)驗(yàn)和教訓(xùn)會(huì)讓我以后的課程設(shè)計(jì)更加順利。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 嚴(yán)蔚敏.吳偉民著.《數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版). 北京:清華大學(xué)出版.1999年第一版</p><p> [2] 陳一華等編. 《數(shù)據(jù)結(jié)構(gòu)》(C 語(yǔ)言). 北京:電
38、子科技大學(xué)出版社.1998年第一版</p><p> [3] 譚浩強(qiáng). 《C語(yǔ)言程序設(shè)計(jì)(第二版)》.北京:高等教育出版社.2002</p><p><b> 附錄.主要代碼</b></p><p><b> 題目一</b></p><p> #include <stdio.h>
39、</p><p> #include <string.h></p><p> #include <stdlib.h></p><p> #include <malloc.h></p><p> #include <windows.h></p><p> type
40、def struct</p><p><b> {</b></p><p> char num[18];</p><p> char name[21];</p><p> char sex[5]; </p><p> char age[4];</p><p>
41、 char xueli[11];</p><p> char addr[51];</p><p> char tel[21];</p><p> }jumininfo;</p><p> typedef struct node</p><p><b> {</b></p>
42、<p> jumininfo jumin;</p><p> struct node *L;</p><p> struct node *R;</p><p> }nodetype;</p><p> typedef nodetype *btree;</p><p> /*void write(b
43、tree k,char * num)</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> if((fp=fopen("infolist.txt","a+"))==NULL)</p><p><
44、;b> {</b></p><p> printf ("文件打開(kāi)錯(cuò)誤!請(qǐng)先錄入信息列表。\n");</p><p> Sleep(3000);</p><p><b> return;</b></p><p><b> }</b></p>
45、<p><b> if(k)</b></p><p><b> {</b></p><p> fwrite(&k->jumin.num,sizeof(nodetype),1,fp); </p><p><b> if(k->L)</b></p>
46、<p> write(k->L,k->L->jumin.num); </p><p> if(k->R) </p><p> write(k->R,k->R->jumin.num);</p><p><b> }</b></p><p> fclose(f
47、p);</p><p><b> }*/</b></p><p> btree bssearch(btree p,char *num)</p><p><b> {</b></p><p> while(p!=NULL)</p><p><b> {<
48、;/b></p><p> if(strcmp(num,p->jumin.num)==0)</p><p><b> return p;</b></p><p> if(strcmp(num,p->jumin.num)<0)</p><p><b> p=p->L;<
49、/b></p><p> else p=p->R;</p><p><b> }</b></p><p><b> return p;</b></p><p><b> }</b></p><p> void insert(btre
50、e * root,char * num)</p><p><b> {</b></p><p> //FILE *fp;</p><p> btree f,p;</p><p> char name[20],sex[4],age[3],xueli[10],addr[50],tel[20];</p>
51、<p> //fp=fopen("infolist.txt","a");</p><p><b> f=NULL;</b></p><p><b> p=*root;</b></p><p><b> while(p)</b></p>
52、;<p><b> {</b></p><p> if(strcmp(num,p->jumin.num)==0)</p><p><b> {</b></p><p> printf("該身份證號(hào)居民信息已存在,請(qǐng)重新輸入!\n");</p><p>
53、<b> return;</b></p><p><b> }</b></p><p><b> f=p;</b></p><p> p=(strcmp(num,p->jumin.num)<0)?p->L:p->R;</p><p><b&
54、gt; }</b></p><p> p=(btree)malloc(sizeof(nodetype));</p><p> strcpy(p->jumin.num,num);</p><p> printf("請(qǐng)輸入姓名(少于10個(gè)漢字):\n");</p><p> scanf("
55、%s",name);</p><p> strcpy(p->jumin.name,name);</p><p> printf("請(qǐng)輸入性別(男或女):\n");</p><p> scanf("%s",sex);</p><p> strcpy(p->jumin.sex,
56、sex);</p><p> printf("請(qǐng)輸入年齡(少于3個(gè)數(shù)字):\n");</p><p> scanf("%s",age);</p><p> strcpy(p->jumin.age,age);</p><p> printf("請(qǐng)輸入學(xué)歷(少于5個(gè)漢字):\n&qu
57、ot;);</p><p> scanf("%s",xueli);</p><p> strcpy(p->jumin.xueli,xueli);</p><p> printf("請(qǐng)輸入家庭住址(少于25個(gè)漢字):\n");</p><p> scanf("%s",ad
58、dr);</p><p> strcpy(p->jumin.addr,addr);</p><p> printf("請(qǐng)輸入電話號(hào)碼(少于20個(gè)數(shù)字或字符):\n");</p><p> scanf("%s",tel);</p><p> strcpy(p->jumin.tel,te
59、l);</p><p> p->L=NULL;</p><p> p->R=NULL;</p><p> if(*root==NULL)</p><p><b> *root=p;</b></p><p><b> else</b></p>
60、<p><b> {</b></p><p> if(strcmp(num,f->jumin.num)<0)</p><p><b> f->L=p;</b></p><p><b> else</b></p><p><b>
61、 f->R=p;</b></p><p><b> }</b></p><p> //write(p,p->jumin.num);</p><p> /*while(p->L)</p><p><b> {</b></p><p> i
62、f (fwrite(&p->jumin.num,sizeof(nodetype),1,fp)!=1)</p><p> printf("File write error!\n");</p><p><b> if(p->L)</b></p><p><b> p=p->L;</
63、b></p><p><b> else</b></p><p><b> if(p->R)</b></p><p><b> p=p->R;</b></p><p><b> }*/</b></p><p&g
64、t; //fclose(fp);</p><p><b> }</b></p><p> /*void read(btree k,char *num)</p><p><b> {</b></p><p><b> FILE *fp;</b></p>
65、<p> if((fp=fopen("infolist.txt","a+"))==NULL)</p><p><b> {</b></p><p> printf ("文件打開(kāi)錯(cuò)誤!請(qǐng)先錄入信息列表。\n");</p><p> Sleep(3000);</p&
66、gt;<p><b> return;</b></p><p><b> }</b></p><p> if((fread(&k->jumin.num,sizeof(nodetype),1,fp))!=1)</p><p><b> exit(0);</b><
67、/p><p> insert(&k,k->jumin.num);</p><p><b> if(k->L)</b></p><p> read(k->L,k->L->jumin.num);</p><p> if(k->R) </p><p>
68、 read(k->R,k->R->jumin.num);</p><p> fclose(fp);</p><p><b> }*/</b></p><p> void inorder(btree t)//中序遍歷</p><p><b> {</b></p>
69、<p> //read(t,t->jumin.num);</p><p><b> if(t)</b></p><p><b> {</b></p><p> inorder(t->L);</p><p> printf(" 戶(hù)籍號(hào)\t 姓名\t\
70、t 性別\t\t年齡 \n");</p><p> printf("\n %s\t\t %s\t\t %s\t\n",t->jumin.num,t->jumin.sex,t->jumin.age);</p><p> printf("\n 學(xué)歷\t\t 住址\t\t電話 \n");</p&g
71、t;<p> printf("\n %s\t\t %s\t\t%s\n",t->jumin.xueli,t->jumin.addr,t->jumin.tel);</p><p> inorder(t->R);</p><p><b> }</b></p><p><b
72、> }</b></p><p> btree createbtree(void)</p><p><b> {</b></p><p> btree root;</p><p> char num[19];</p><p> root=NULL;</p>
73、<p> printf("\n請(qǐng)輸入18位身份證號(hào),輸入#取消錄入\n");</p><p> scanf("%s",num);</p><p> while(strcmp(num,"#")!=0)</p><p><b> {</b></p><
74、;p> while(strlen(num)!=18)</p><p><b> {</b></p><p> printf("錯(cuò)誤!輸入的身份證號(hào)不是18位,請(qǐng)重新輸入:\n");</p><p> scanf("%s",num);</p><p><b>
75、 }</b></p><p> insert(&root,num);</p><p> printf("\n請(qǐng)輸入18位身份證號(hào),輸入#取消錄入\n");</p><p> scanf("%s",num);</p><p><b> }</b><
76、/p><p> return root;</p><p><b> }</b></p><p> btree Delete(btree bt,char *num)</p><p><b> {</b></p><p> btree p,q;</p><
77、;p> if(strcmp(bt->jumin.num,num)==0)</p><p><b> {</b></p><p> if(bt->L==NULL&&bt->R==NULL)</p><p><b> {</b></p><p><b
78、> free(bt);</b></p><p> return NULL;</p><p><b> }</b></p><p><b> else</b></p><p> if(bt->L==NULL)</p><p><b>
79、 {</b></p><p><b> p=bt->R;</b></p><p><b> free(bt);</b></p><p><b> return p;</b></p><p><b> }</b></p>
80、;<p><b> else</b></p><p> if(bt->R==NULL)</p><p><b> {</b></p><p><b> p=bt->L;</b></p><p><b> free(bt);</
81、b></p><p><b> return p;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> p=q=bt-&g
82、t;R;</p><p> while(q->L!=NULL)</p><p><b> q=q->L;</b></p><p> q->L=bt->L;</p><p><b> free(bt);</b></p><p><b>
83、 return p;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> i
84、f(strcmp(bt->jumin.num,num)>0&&bt->L!=NULL)</p><p> bt->L=Delete(bt->L,num);</p><p> if(strcmp(bt->jumin.num,num)<0&&bt->R!=NULL)</p><p>
85、bt->R=Delete(bt->R,num);</p><p> return bt;</p><p><b> }</b></p><p><b> }</b></p><p> void quit()</p><p><b> {(略)}
86、</b></p><p> void homepage() /*菜單函數(shù)*/</p><p><b> {(略)}</b></p><p> void main()</p><p><b> {(略)}</b></p><p><b> 題
87、目二</b></p><p> 此處只給出排序函數(shù),其他部分同C語(yǔ)言課程設(shè)計(jì)</p><p> void insertsort(rectype r[])//按年齡直接插入排序</p><p><b> {</b></p><p><b> int i,j;</b></p&g
88、t;<p> int m=load();</p><p> printf("\n 原來(lái)的居民信息:\n");</p><p> display();</p><p> printf("\n\n\n\n");</p><p> for(i=1;i<m;i++)</p&g
89、t;<p><b> {</b></p><p> r[i].key=r[i].info.age;</p><p><b> }</b></p><p> for(i=2;i<=m;i++)</p><p> {r[m+1]=r[i];</p><p
90、><b> j=i-1;</b></p><p> while(r[m+1].key<r[j].key)</p><p> {r[j+1]=r[j--];</p><p> r[j+1]=r[m+1];</p><p> }save(m+1);</p><p> }prin
91、tf("\n 排序后的居民信息:\n");</p><p> display();}</p><p> void selectsort(rectype r[])//按戶(hù)籍號(hào)直接選擇排序</p><p> {rectype x;</p><p> int m=load();</p><p>
92、 int i,j,k;</p><p> printf("\n 原來(lái)的居民信息:\n");</p><p> display();</p><p> for(i=0;i<m;i++)</p><p> {r[i].key=r[i].info.num; };</p><p> for(
93、i=0;i<m;i++)</p><p><b> {k=i;</b></p><p> for(j=i+1;j<=m;j++)</p><p> if(r[j].key<r[k].key)</p><p><b> k=j;</b></p><p>
94、;<b> if(k!=i)</b></p><p><b> {x=r[i];</b></p><p> r[i]=r[k];</p><p><b> r[k]=x;</b></p><p> }save(m+1);}</p><p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《數(shù)據(jù)結(jié)構(gòu)遍歷二叉樹(shù)》課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---二叉樹(shù)的遍歷算法集成
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--二叉樹(shù)的遍歷
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)之二叉樹(shù)的遍歷
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--按層次遍歷二叉樹(shù)
- 二叉樹(shù)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---線索二叉樹(shù)的生成及其遍歷
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--二叉樹(shù)的算法
- 遍歷二叉樹(shù)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---二叉樹(shù)和中序遍歷的演示
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---二叉樹(shù)的建立和遍歷的演示
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----二叉樹(shù)的應(yīng)用
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---計(jì)算二叉樹(shù)高度
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---二叉樹(shù)的操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--二叉樹(shù)及應(yīng)用
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)之-樹(shù)與二叉樹(shù)的轉(zhuǎn)換
- 數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)--線索二叉樹(shù)的基本操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---線索二叉樹(shù)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--二叉樹(shù)的相關(guān)操作
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----二叉樹(shù)平衡的判定
評(píng)論
0/150
提交評(píng)論