《數(shù)據(jù)結構課程設計》列舉了數(shù)據(jù)結構課程設計實例,通過綜合訓練,能夠培養(yǎng)學生實際分析問題、解決問題、編程和動手操作等多方面的能力,最終目的是幫助學生系統(tǒng)地掌握該門課程的基本內(nèi)容,并運用所學的數(shù)據(jù)結構知識去解決實際問題。
全書共8章,內(nèi)容包括數(shù)據(jù)庫課程設計概述、線性表、棧、隊列、串、多維數(shù)組和廣義表、樹狀結構、圖狀結構等問題的應用。
《數(shù)據(jù)結構課程設計》是一本獨立于具體的數(shù)據(jù)結構教材的課程設計輔導書,通過針對每種數(shù)據(jù)結構的具體實例,循序漸進地啟發(fā)學生完成設計。書中給出的實例都是完整可運行的,同時給出了測試樣例、總結與思考等,是一本很好的教學輔導參考書。
《數(shù)據(jù)結構課程設計》共分為8章。第1章是關于數(shù)據(jù)結構課程設計的概述;第2~8章按照一般教學順序,分別給出線性表、棧、隊列、串、多維數(shù)組和廣義表、樹狀結構和圖狀結構的課程設計實例。 《數(shù)據(jù)結構課程設計》可作為高等院校計算機專業(yè)及相關專業(yè)教材或參考書,也可供從事軟件開發(fā)工作和計算機編程愛好者參考。
“數(shù)據(jù)結構”課程的教學目標是要求學生學會分析數(shù)據(jù)對象特征,掌握數(shù)據(jù)組織方法和計算機的表示方法,以便為應用所涉及的數(shù)據(jù)選擇適當?shù)倪壿嫿Y構、存儲結構以及相應算法,初步掌握算法時間空間分析的技巧,培養(yǎng)良好的程序設計技能。
數(shù)據(jù)結構的學習過程是進行復雜程序設計的訓練過程。技能培養(yǎng)的重要程度不亞于知識傳授,學生不僅要理解授課內(nèi)容,還應培養(yǎng)應用知識解答復雜問題的能力,形成良好的算法設計思想、方法技巧與風格,進行構造性思維,強化程序抽象能力和數(shù)據(jù)抽象能力。因此,學習數(shù)據(jù)結構,僅從書本上學習是不夠的,必須經(jīng)過大量的實踐,在實踐中體會構造性思維的方法,掌握數(shù)據(jù)組織與程序設計的技術。
在該課程的學習過程中,初學者會感到困惑,其主要原因:一是數(shù)據(jù)結構內(nèi)容抽象;二是動態(tài)存儲結構難以理解;三是使用多種技術,如遞歸技術等掌握較為困難;四是算法描述、設計無從下手等。
為了使學生更好地學習本課程,理解和掌握算法設計所需的技術,為整個專業(yè)的學習打好基礎,本人根據(jù)學生的學習特點及自己二十多年的教學經(jīng)驗和總結,編寫了本書,希望能給學生帶來一些啟發(fā)。
編寫本書的出發(fā)點不是要給學生幾個課程設計實例,而是希望通過一些典型的課程設計實例訓練,使學生掌握如何利用數(shù)據(jù)結構知識去解決實際問題。
全書共分為8章。第1章是關于數(shù)據(jù)結構課程設計的概述;第2~8章按照一般教學順序,分別給出線性表、棧、隊列、串、多維數(shù)組和廣義表、樹狀結構和圖狀結構的課程設計實例。
本書是在作者的“數(shù)據(jù)結構”講義和指導學生的“課程設計大作業(yè)”基礎上編寫而成的。第2~8章的課程設計分別由宮耀勤、李闖、張偉、叢飚、逯洋、李淑梅和英昌盛完成修改或設計,2007級學生王旭峰、楊名、張洋銘、袁洋、楊靜、王珊珊和張群等參加了部分代碼編寫和程序調(diào)試,夏鳳琴、劉艷玲、姚建盛、李穎、張桂杰、梁微、代勝男、羅琳、郝萬萍和王金平等人進行了文稿的校對,最后由英昌盛對源程序統(tǒng)一整理,作者謹此一并致以誠摯的謝意。全書由滕國文教授統(tǒng)稿、審閱和整理后定稿。
在本書的編寫過程中,作者參閱并借鑒了國內(nèi)外諸多同行的文章和著作,這里不再一一列舉、標明,在此向他們致以謝意。
由于作者知識水平有限,時間倉促,本書難免有不足之處,懇請專家和讀者批評指正。
滕國文
2010年4月數(shù)據(jù)結構課程設計
第1章 數(shù)據(jù)結構課程設計概述1
1.1 數(shù)據(jù)結構簡介1
1.2 課程設計目標和特點2
1.3 編寫說明3
1.4 課程設計實例的標準格式4
第2章 線性表的應用6
2.1 存儲結構與基本運算的算法6
2.2 集合的交、并運算15
2.3 學生成績管理18
2.4 多項式求導25
2.5 約瑟夫環(huán)問題30
2.6 數(shù)據(jù)庫管理系統(tǒng)34
第3章 棧的應用58
3.1 存儲結構與基本運算的算法58
3.2 括號匹配63
3.3 漢諾塔問題66
3.4 算術表達式求值69
3.5 馬踏棋盤76
第4章 隊列的應用82
4.1 存儲結構與基本運算的算法82
4.2 看病排隊候診問題88
4.3 數(shù)制的轉換91
4.4 停車場管理99
4.5 基數(shù)排序107
第5章 串的應用114
5.1 存儲結構與基本運算的算法114
5.2 KMP算法118
5.3 最長公共子串121
5.4 大整數(shù)計算器123
數(shù)據(jù)結構課程設計目 錄
第6章 多維數(shù)組和廣義表的應用130
6.1 存儲結構與基本運算的算法130
6.2 魔方陣139
6.3 稀疏矩陣的加法運算143
6.4 本科生導師制問題151
第7章 樹狀結構的應用169
7.1 存儲結構與基本運算的算法169
7.2 線索二叉樹的創(chuàng)建與遍歷172
7.3 由遍歷確定二叉樹175
7.4 電文的編碼和譯碼177
7.5 家族關系查詢系統(tǒng)183
第8章 圖狀結構的應用201
8.1 存儲結構與基本運算的算法201
8.2 地鐵建設問題209
8.3 安排教學計劃214
8.4 校園導航218
附錄A 課程設計實例軟件包224
參考文獻227