第1章 編程準(zhǔn)備知識(shí) … 1
1.1 指針 2
1.1.1 C語(yǔ)言的變量和指針 … 2
1.1.2 指針和數(shù)組 … 6
1.1.3 指針和字符串 8
1.1.4 二維指針 9
1.2 結(jié)構(gòu)體 10
1.2.1 定義結(jié)構(gòu)體 10
1.2.2 用typedef定義新數(shù)據(jù)類型 10
1.2.3 結(jié)構(gòu)體變量的定義和訪問(wèn)數(shù)據(jù)成員 11
1.3 軟考試題 … 13
本章小結(jié) 13
實(shí)驗(yàn)題1 13
習(xí)題1 … 14
第2章 算法與數(shù)據(jù)結(jié)構(gòu) … 16
2.1 數(shù)據(jù)結(jié)構(gòu)的基本概念和術(shù)語(yǔ) … 17
2.1.1 數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)項(xiàng)和數(shù)據(jù)對(duì)象 … 17
2.1.2 數(shù)據(jù)結(jié)構(gòu) … 17
2.2 抽象數(shù)據(jù)類型的表示與實(shí)現(xiàn) … 20
2.2.1 數(shù)據(jù)類型 … 20
2.2.2 抽象數(shù)據(jù)類型 … 20
2.3 算法與程序的關(guān)系 … 21
2.4 算法復(fù)雜度分析 22
2.4.1 時(shí)間復(fù)雜度的組成 … 23
2.4.2 空間復(fù)雜度的組成 … 27
2.5 軟考試題 … 28
本章小結(jié) 28
實(shí)驗(yàn)題2 29
習(xí)題2 … 29
第3章 線性表 32
3.1 線性表的基本概念 … 32
3.1.1 線性表定義 32
3.1.2 抽象數(shù)據(jù)類型定義 … 33
3.2 線性表的順序存儲(chǔ) … 35
3.2.1 線性順序表的邏輯狀態(tài) … 35
3.2.2 定長(zhǎng)數(shù)組存儲(chǔ) … 35
3.2.3 變長(zhǎng)數(shù)組存儲(chǔ) … 36
3.2.4 順序表的操作算法 … 36
3.2.5 順序表的算法分析 … 41
3.3 線性表鏈?zhǔn)矫枋? 41
3.3.1 單鏈表 41
3.3.2 單鏈表的操作算法 … 44
3.3.3 單鏈表的操作算法復(fù)雜度分析 50
3.3.4 循環(huán)單鏈表 51
3.3.5 雙向循環(huán)鏈表 … 52
3.4 軟考試題 … 54
本章小結(jié) 55
實(shí)驗(yàn)題3 55
習(xí)題3 … 56
第4章 棧 59
4.1 棧的基本概念 … 59
4.1.1 棧的定義 … 60
4.1.2 棧的抽象數(shù)據(jù)類型定義 … 60
4.2 棧的順序存儲(chǔ) … 61
4.2.1 利用靜態(tài)數(shù)組實(shí)現(xiàn) … 61
4.2.2 利用動(dòng)態(tài)數(shù)組實(shí)現(xiàn) … 64
4.2.3 算法時(shí)間復(fù)雜度分析 65
4.3 棧的鏈?zhǔn)酱鎯?chǔ) … 66
4.4 棧的應(yīng)用 … 69
4.4.1 十進(jìn)制數(shù)轉(zhuǎn)換為其他進(jìn)制 69
4.4.2 括號(hào)匹配的檢驗(yàn) 70
4.4.3 遞歸 … 71
4.5 軟考試題 … 75
本章小結(jié) 75
實(shí)驗(yàn)題4 75
習(xí)題4 … 76
第5章 隊(duì)列 … 78
5.1 隊(duì)列的基本概念 79
5.1.1 隊(duì)列的定義 79
5.1.2 隊(duì)列的抽象數(shù)據(jù)類型定義 79
5.2 循環(huán)隊(duì)列—隊(duì)列的順序表示和實(shí)現(xiàn) 80
5.3 鏈隊(duì)列—隊(duì)列的鏈?zhǔn)奖硎竞蛯?shí)現(xiàn) … 85
5.4 軟考試題 … 88
本章小結(jié) 89
實(shí)驗(yàn)題5 89
習(xí)題5 … 90
第6章 樹(shù) 91
6.1 樹(shù)的基本概念 … 91
6.1.1 樹(shù)的定義 … 91
6.1.2 樹(shù)結(jié)構(gòu)中常用術(shù)語(yǔ) … 92
6.2 二叉樹(shù) 94
6.2.1 二叉樹(shù)的定義 … 94
6.2.2 二叉樹(shù)的性質(zhì) … 95
6.2.3 二叉樹(shù)的抽象數(shù)據(jù)類型定義 … 97
6.3 二叉樹(shù)的順序存儲(chǔ)結(jié)構(gòu) … 99
6.4 二叉樹(shù)的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu) … 100
6.4.1 二叉樹(shù)的二叉鏈表的表示及創(chuàng)建二叉鏈表 … 100
6.4.2 二叉樹(shù)的遍歷 … 101
6.4.3 二叉樹(shù)表達(dá)式 … 102
6.4.4 二叉鏈表的遍歷算法實(shí)現(xiàn) 102
6.5 線索二叉樹(shù) 105
6.6 樹(shù)和森林 … 110
6.6.1 樹(shù)的存儲(chǔ)結(jié)構(gòu) … 110
6.6.2 樹(shù)和二叉樹(shù)的轉(zhuǎn)換 … 111
6.6.3 樹(shù)和森林的遍歷 114
6.7 樹(shù)的應(yīng)用 … 114
6.7.1 最優(yōu)二叉樹(shù) (Huffman樹(shù)) … 114
6.7.2 構(gòu)建 Huffman樹(shù) (最優(yōu)二叉樹(shù)) 117
6.7.3 Huffman編碼 … 118
6.8 軟考試題 … 119
本章小結(jié) … 121
實(shí)驗(yàn)題6 … 121
習(xí)題6 122
第7章 圖 … 125
7.1 圖的定義和術(shù)語(yǔ) 126
7.1.1 圖的基本概念 … 126
7.1.2 圖的抽象數(shù)據(jù)類型定義 … 129
7.2 圖的存儲(chǔ)結(jié)構(gòu) … 131
7.2.1 鄰接矩陣 (順序存儲(chǔ)結(jié)構(gòu)) … 131
7.2.2 鄰接表 (鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)) 135
7.2.3 十字鏈表 (鏈?zhǔn)酱鎯?chǔ)) … 140
7.3 圖的遍歷 … 145
7.3.1 圖的深度優(yōu)先搜索遍歷 … 145
7.3.2 圖的廣度優(yōu)先搜索遍歷 … 147
7.4 圖的應(yīng)用 … 148
7.4.1 生成樹(shù)與最小生成樹(shù) 148
7.4.2 拓?fù)渑判蚝完P(guān)鍵路徑 155
7.4.3 最短路徑 … 159
7.5 軟考試題 … 165
本章小結(jié) … 166
實(shí)驗(yàn)題7 … 166
習(xí)題7 167
第8章 查找 169
8.1 靜態(tài)查找 … 170
8.1.1 順序表的查找 … 170
8.1.2 折半查找 … 171
8.1.3 索引順序表的查找 … 173
8.2 動(dòng)態(tài)查找 … 175
8.2.1 二叉排序樹(shù) 175
8.2.2 平衡二叉樹(shù) (?) … 178
8.3 哈希表查找 184
8.3.1 哈希表 184
8.3.2 哈希函數(shù)的構(gòu)造方法 185
8.3.3 處理沖突的方法 187
8.3.4 哈希表的查找及其分析 … 189
8.4 軟考試題 … 192
本章小結(jié) … 193
實(shí)驗(yàn)題8 … 193
習(xí)題8 194
第9章 排序 196
9.1 插入排序 … 197
9.1.1 直接插入排序 … 197
9.1.2 折半插入排序 … 199
9.1.3 希爾排序 … 201
9.2 交換排序 … 203
9.2.1 冒泡排序 … 203
9.2.2 快速排序 … 204
9.3 選擇排序 … 207
9.3.1 簡(jiǎn)單選擇排序 … 207
9.3.2 樹(shù)形選擇排序 … 209
9.3.3 堆排序 210
9.4 歸并排序 … 213
9.5 基數(shù)排序 (?) 216
9.6 軟考試題 … 219
本章小結(jié) … 220
實(shí)驗(yàn)題9 … 220
習(xí)題9 221
參考答案… 223
參考文獻(xiàn)… 238