數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--二叉樹(shù)的遍歷算法分析與設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論