本書以"問題驅(qū)動”為導(dǎo)向,結(jié)合數(shù)據(jù)結(jié)構(gòu)課程知識的精華內(nèi)容,通過學(xué)生對日常學(xué)習(xí)、生活中遇到的典型問題和案例的分析、討論,引導(dǎo)學(xué)生了解數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識,培養(yǎng)學(xué)生對算法設(shè)計和分析的興趣,幫助學(xué)生了解"計算思維”的內(nèi)涵及本質(zhì),提高學(xué)生"IT”職業(yè)素養(yǎng)和分析能力。 本書共10章,內(nèi)容涉及線性表、堆棧、隊列、查找、排序、二叉樹、圖等數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)知識。在內(nèi)容組織上,打破傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)教材的編排順序,將需要解決的問題作為主線。除第1章緒論外,其余9章均以一個具體問題為引導(dǎo),然后針對該問題展開,對相關(guān)知識進行介紹。例如,第3章獎學(xué)金爭先,通過學(xué)生獎學(xué)金的計算及發(fā)放問題,對排序的相關(guān)知識進行介紹;第4章網(wǎng)上沖浪,根據(jù)瀏覽器的瀏覽操作原理,對堆棧及相關(guān)知識進行介紹。這樣容易吸引學(xué)生的興趣和注意力,使學(xué)習(xí)不再枯燥。 本書可作為高校相關(guān)通識課程的參考教材,也可以作為中小學(xué)生信息技術(shù)類的課外讀物。
魏振鋼,男,教授,1984年6月畢業(yè)于山東大學(xué)計算機專業(yè),1980.7—1986.6,山東大學(xué)講師,1986.6—至今,中國海洋大學(xué)教授,兼任信息化教學(xué)中心主任。任全國高校計算機教育研究會理事,中國體育學(xué)會信息分會常務(wù)理事,青島計算機學(xué)會常務(wù)理事。曾獲得中國海洋大學(xué)教學(xué)名師,青島市教學(xué)名師,教育部-英特爾精品課程、山東精品課程《數(shù)據(jù)結(jié)構(gòu)》負(fù)責(zé)人,教育部-IBM精品課程《軟件工程》負(fù)責(zé)人。先后主持國家自然科學(xué)基金1項,省級自然科學(xué)基金1項,主編教材1部,出版教材名稱:《數(shù)據(jù)結(jié)構(gòu)》,出版社:高等教育出版社,出版時間:2011年2月。
— 目 錄 —
第1章 緒論 / 1
1.1 何為算法 / 1
1.2 算法的特性 / 3
1.3 “敲7”游戲 / 4
1.3.1 數(shù)據(jù)元素 / 4
1.3.2 數(shù)據(jù)的邏輯結(jié)構(gòu) / 5
1.3.3 數(shù)據(jù)的存儲結(jié)構(gòu) / 6
1.3.4 線性表的刪除 / 7
1.3.5 “敲7”游戲的算法
設(shè)計 / 9
1.4 計算機求解問題的基本
步驟 / 10
1.5 總結(jié)與思考 / 11
第2章 《三體》在哪里 / 12
2.1 怎樣找到《三體》
這本書 / 12
2.2 線性表的定義及表示 / 14
2.2.1 類型定義 / 14
2.2.2 線性表的順序表示和實現(xiàn) / 17
2.2.3 線性鏈表 / 20
2.2.4 循環(huán)鏈表 / 27
2.3 查找的定義 / 28
2.3.1 概念與術(shù)語 / 28
2.3.2 順序表的查找 / 29
2.3.3 有序表的查找 / 33
2.4 如何查找《三體》
這本書 / 37
2.4.1 問題分析 / 37
2.4.2 算法設(shè)計 / 37
2.5 如何找到“小明” / 38
2.5.1 問題描述 / 38
2.5.2 問題分析 / 39
2.6 總結(jié)與思考 / 39
第3章 獎學(xué)金爭先 / 41
3.1 誰能拿到獎學(xué)金 / 41
3.2 常用排序方法介紹 / 42
3.2.1 概述 / 42
3.2.2 直接插入排序 / 43
3.2.3 起泡排序 / 46
3.2.4 快速排序 / 49
3.2.5 簡單選擇排序 / 51
3.3 獎學(xué)金競爭問題的
求解 / 53
3.3.1 問題分析 / 53
3.3.2 算法分析 / 53
3.3.3 算法設(shè)計 / 54
3.4 應(yīng)用 / 55
3.4.1 荷蘭國旗問題 / 55
3.4.2 貨箱移動問題 / 57
3.5 總結(jié)與思考 / 58
第4章 網(wǎng)上沖浪 / 59
4.1 “Web導(dǎo)航”問題 / 59
4.1.1 問題描述 / 59
4.1.2 問題分析 / 61
4.2 什么是“棧” / 62
4.2.1 棧的定義 / 62
4.2.2 棧的順序表示和
實現(xiàn) / 64
4.2.3 棧的應(yīng)用舉例 / 64
4.2.4 生活中的棧 / 67
4.3 如何實現(xiàn)“Web導(dǎo)航” / 69
4.3.1 問題分析 / 69
4.3.2 算法設(shè)計 / 71
4.4 列車調(diào)度問題 / 73
4.4.1 問題描述 / 73
4.4.2 問題分析 / 73
4.4.3 算法設(shè)計 / 74
4.5 總結(jié)與思考 / 75
第5章 “漢諾塔”的智慧 / 77
5.1 “漢諾塔”問題 / 77
5.1.1 問題描述 / 77
5.1.2 問題分析 / 78
5.2 遞歸的基本概念與
應(yīng)用 / 81
5.2.1 遞歸 / 81
5.2.2 遞歸函數(shù) / 82
5.3 “漢諾塔”問題求解 / 83
5.3.1 問題分析 / 83
5.3.2 算法設(shè)計 / 84
5.4 應(yīng)用 / 85
5.4.1 八皇后問題 / 85
5.4.2 快速排序 / 88
5.4.3 分蘋果問題 / 88
5.5 總結(jié)與思考 / 89
第6章 舞伴的選擇 / 91
6.1 舞伴組合 / 91
6.1.1 問題描述 / 91
6.1.2 問題分析 / 91
6.2 隊列 / 92
6.2.1 隊列的抽象數(shù)據(jù)類型定義 / 92
6.2.2 隊列的基本
操作 / 93
6.2.3 生活中的隊列 / 94
6.3 舞伴組合問題求解 / 95
6.3.1 算法分析 / 95
6.3.2 算法設(shè)計 / 95
6.3.3 算法設(shè)計 / 97
6.4 消息的加密和解密 / 98
6.4.1 問題描述 / 98
6.4.2 問題分析 / 98
6.4.3 算法設(shè)計 / 99
6.5 總結(jié)與思考 / 99
第7章 愛的密碼 / 101
7.1 如何傳輸“I LOVE
YOU” / 101
7.1.1 問題描述 / 101
7.1.2 問題分析 / 101
7.2 樹及二叉樹 / 102
7.2.1 樹的定義 / 102
7.2.2 二叉樹 / 104
7.3 哈夫曼樹及其哈夫曼
編碼 / 110
7.3.1 哈夫曼樹 / 110
7.3.2 哈夫曼編碼 / 113
7.3.3 傳輸“I LOVE YOU”的解決方案 / 114
7.4 農(nóng)夫鋸木板問題 / 117
7.4.1 問題描述 / 117
7.4.2 算法分析 / 117
7.4.3 算法設(shè)計 / 117
7.5 總結(jié)與思考 / 118
第8章 眾里尋他千百度 / 120
8.1 微信通訊錄 / 120
8.2 動態(tài)查找表 / 121
8.2.1 二叉排序樹 / 121
8.2.2 平衡二叉樹 / 127
8.2.3 B-樹和B+樹 / 129
8.3 哈希表 / 132
8.3.1 哈希表的定義 / 132
8.3.2 哈希表的查找 / 134
8.3.3 哈希表的應(yīng)用 / 134
8.4 電話通訊錄的實現(xiàn) / 134
8.4.1 問題描述 / 134
8.4.2 問題分析 / 135
8.5 總結(jié)與思考 / 139
第9章 城市互連 / 140
9.1 城市公路連接問題 / 140
9.1.1 問題描述 / 140
9.1.2 問題分析 / 141
9.2 圖的基本知識 / 141
9.2.1 圖的定義和
術(shù)語 / 141
9.2.2 圖的存儲結(jié)構(gòu) / 144
9.3 最小生成樹的求解 / 148
9.3.1 普里姆算法 / 148
9.3.2 克魯斯卡爾
算法 / 152
9.4 城市公路連接問題的
求解 / 153
9.5 應(yīng)城市之間的通信線路網(wǎng)建設(shè)問題 / 154
9.5.1 問題描述 / 154
9.5.2 問題分析 / 154
9.6 總結(jié)與思考 / 154
第10章 地圖導(dǎo)航 / 155
10.1 如何去羅馬 / 156
10.1.1 問題描述 / 156
10.1.2 問題分析 / 156
10.2 如何求解最短路徑 / 157
10.2.1 從某個源點到
其余各頂點的最
短路徑 / 157
10.2.2 每對頂點之間的
最短路徑 / 160
10.3 如何實現(xiàn)去羅馬 / 163
10.4 校園導(dǎo)航 / 163
10.4.1 問題描述 / 163
10.4.2 問題分析 / 164
10.4.3 算法設(shè)計 / 164
10.5 總結(jié)與思考 / 167
參考文獻 / 169