本書是由編著者積累多年講授數據結構課程及指導學生實驗的教學實踐經驗編寫而成的。編著者力圖通過指導學生的實驗實踐和大量典型例題的解析,幫助學生深入學習、掌握并靈活運用數據結構知識。本書作為高等學校計算機基礎教育規劃教材《數據結構》的配套教材,可以配合主教材使用,起到銜接課堂教學與實驗教學、課下輔導的作用,可作為高等院校學生學習數據結構課程的參考書,對于從事計算機應用及開發的技術人員以及相關專業的自學者,也具有一定的參考價值。
本書作為規劃教材《數據結構》的配套教材,可以配合主教材使用,起到銜接課堂教學與實驗教學、課下輔導的作用,可作為高等院校學生學習數據結構課程的參考書。全書由三部分組成。*部分為學習提要和習題解答;第二部分為實驗指導;第三部分為數據結構課程設計。
在計算機教育中,數據結構的核心地位與重要作用是普遍公認的,而學習數據結構的困難也為廣大師生所共識。根據編著者多年的教學經驗,學習數據結構的主要困難在于解題。解題中經常會出現錯誤的原因在于: 一是教材中沒有重點解釋;二是教師授課時無法做到面面俱到。因此,要學好數據結構,僅僅通過課堂教學或自學來掌握理論知識是遠遠不夠的,還必須加強實踐。除了完成數據結構的習題以外,還需要上機完成數據結構實驗的若干任務。為此,我們編寫了這本《數據結構習題解答與實驗指導》。本書是高等院校計算機基礎教育規劃教材《數據結構》的配套實驗用書。全書共分為3篇: 第一篇為學習指導與習題解答,主要幫助讀者理解數據結構的各種基本知識點和要點,并且提供了原教材的習題參考解答;第二篇為數據結構實驗,本篇要求讀者在實驗前做好充分準備,然后利用課內學時和課外時間進行上機實踐,實驗后認真書寫實驗報告;第三篇為數據結構課程設計,此部分含大型作業題,主要幫助讀者在完成數據結構的實驗之外,再進一步去完成數據結構課程設計的若干實踐任務,以幫助讀者上機調試、運行各種典型的算法和自己編制的算法,從實踐中得到鍛煉和提高,從而學會運用理論知識去解決軟件開發中的實際問題,達到學以致用的目的。本書使用C語言來描述算法和數據結構,各實驗中的程序都在Cfree或Visual C 6.0中調試通過,以方便讀者在計算機上進行實踐,有助于理解算法的實質和基本思想。本書內容既配合原教材,又有相對的獨立性,內容安排由淺入深,可以循序漸進地培養學生的實踐技能。本書既可以作為高校計算機及相關專業本科生的配套教材,也可以作為專科和成人教育的輔助教材。另外,本書還可供從事計算機應用等工作的工程技術人員參考,讀者只需掌握C語言編程的基本技術就可以學習本書。由于編著者水平有限,因此書中難免有不足之處,殷切希望廣大讀者批評、指正。編著者2018年4月數據結構習題解答與實驗指導目錄第一篇學習指導與習題解答
第1章概論31.1學習指導31.1.1基本知識點31.1.2要點分析41.2習題參考解答5第2章線性表82.1學習指導82.1.1基本知識點82.1.2要點分析92.2習題參考解答10第3章棧和隊列163.1學習指導163.1.1基本知識點163.1.2要點分析173.2習題參考解答18第4章串264.1學習指導264.1.1基本知識點264.1.2要點分析274.2習題參考解答27第5章數組和廣義表325.1學習指導325.1.1基本知識點325.1.2要點分析335.2習題參考解答33第6章樹和二叉樹386.1學習指導386.1.1基本知識點386.1.2要點分析416.2習題參考解答43第7章圖497.1學習指導497.1.1基本知識點497.1.2要點分析527.2習題參考解答52第8章查找658.1學習指導658.1.1基本知識點658.1.2要點分析668.2習題參考解答67第9章排序739.1學習指導739.1.1基本知識點739.1.2要點分析739.2習題參考解答74第二篇數據結構實驗第10章數據結構實驗概述8510.1實驗教學的目的8510.2實驗教學的主要內容8510.3實驗步驟8610.4實驗報告示例88第11章數據結構實驗安排9111.1線性表9111.1.1順序表操作(驗證實驗)9111.1.2單鏈表操作(驗證實驗)9411.1.3約瑟夫環問題(設計實驗)9711.1.4一元多項式加(減)法計算器(設計實驗)9811.2棧和隊列9811.2.1順序棧操作(驗證實驗)9811.2.2鏈棧操作(驗證實驗)10111.2.3順序隊列操作(驗證實驗)10511.2.4鏈隊列操作(驗證實驗)11111.2.5括號匹配的檢驗(設計實驗)11411.2.6棧逆置隊列(設計實驗)11511.3樹和二叉樹11611.3.1二叉樹操作(驗證實驗)11611.3.2哈夫曼編碼問題(設計實驗)12211.4圖12311.4.1無向圖的鄰接矩陣操作(驗證實驗)12311.4.2無向圖的鄰接表操作(驗證實驗)12411.4.3單源點最短路徑問題(設計實驗)12811.4.4多源點最短路徑問題(設計實驗)12811.5查找12911.5.1查找算法(驗證實驗)12911.5.2哈希表設計(設計實驗)13911.6排序14011.6.1直接插入排序(設計實驗)14011.6.2希爾排序(設計實驗)14211.6.3冒泡排序(設計實驗)14311.6.4直接選擇排序(設計實驗)14411.6.5快速排序(設計實驗)14411.6.6歸并排序(設計實驗)145第三篇數據結構課程設計第12章數據結構課程設計概述14912.1課程設計的目的14912.2課程設計的時間安排15012.3課程設計的指導教師15012.4課程設計的選題內容和要求15012.5課程設計的實施步驟15112.6課程設計總結報告的撰寫規范15112.7課程設計的上交材料15212.8課程設計的成績評定152第13章數據結構課程設計安排15313.1線性表(課程設計1)15313.1.1順序表的就地逆置15313.1.2單鏈表的就地逆置15713.2棧(課程設計2)16013.2.1用棧逆置一個單鏈表16313.2.2共享棧的設計16613.3隊列(課程設計3)16813.4樹和二叉樹(課程設計4)17513.4.1二叉樹的生成17513.4.2最優二叉樹(哈夫曼樹)的建立17813.5圖(課程設計5)18113.5.1圖的存儲結構18113.5.2圖的遍歷18413.5.3圖的應用18613.6查找(課程設計6)18813.7排序(課程設計7)19413.8大型作業題(課程設計8)20713.9數據結構課程設計補充題目210第14章數據結構課程設計案例圖書管理信息系統的設計與實現22414.1設計要求22414.2設計分析22514.2.1數據文件類型設計22514.2.2系統功能算法描述22714.3設計的實現23114.4測試運行實例24114.4.1主控菜單的設計24114.4.2測試運行實例242參考文獻248