圖書簡介
本書理論與實踐相結合,旨在幫助讀者理解算法,並提高C語言編程能力,培養讀者的編程興趣,並鞏固已有的C語言知識。全書分為2個部分共10章,內容涵蓋了編程必備的基礎知識(如數據結構、常用算法等),編程實例介紹,常見算法和數據結構面試題等。本書最大的特色在於實例豐富,題材新穎有趣,實用性強,理論寓於實踐之中。通過本書的學習,可以使讀者開闊眼界,提高編程的興趣,提高讀者的編程能力和應試能力。
目錄
第1部分基礎篇
第1章數據結構基礎 2
1.1什麼是數據結構 2
1.2順序表 2
1.2.1順序表的定義 3
1.2.2向順序表中插入元素 4
1.2.3從順序表中刪除元素 5
1.2.4實例與分析 7
1.3鍊表 10
1.3.1創建一個鍊表 11
1.3.2向鍊表中插入結點 12
1.3.3從鍊表中刪除結點 13
1.3.4銷毀一個鍊表 15
1.3.5實例與分析 15
1.4棧 17
1.4.1棧的定義 18
1.4.2創建一個棧 19
1.4.3入棧操作 19
1.4.4出棧操作 20
1.4.5棧的其他操作 21
1.4.6實例與分析 22
1.5佇列 24
1.5.1佇列的定義 24
1.5.2創建一個佇列 25
1.5.3入佇列操作 26
1.5.4出佇列操作 27
1.5.5銷毀一個佇列 28
1.5.6循環佇列的概念 28
1.5.7循環佇列的實現 29
1.5.8實例與分析 31
1.6樹結構 32
1.6.1樹的概念 33
1.6.2樹結構的計算機存儲形式 33
1.6.3二叉樹的定義 34
1.6.4二叉樹的遍歷 35
1.6.5創建二叉樹 36
1.6.6實例與分析 37
1.7圖結構 38
1.7.1圖的概念 39
1.7.2圖的存儲形式 39
1.7.3鄰接表的定義 41
1.7.4圖的創建 41
1.7.5圖的遍歷(1)——深度優先搜尋 43
1.7.6圖的遍歷(2)——廣度優先搜尋 45
1.7.7實例與分析 47
第2章常用的查找與排序方法 51
2.1順序查找 51
2.2折半查找 54
2.3排序的概述 57
2.4直接插入排序 58
2.5選擇排序 60
2.6冒泡排序 63
2.7希爾排序 65
2.8快速排序 68
第3章常用的算法思想 72
3.1什麼是算法 72
3.2算法的分類表示及測評 73
3.2.1算法的分類 73
3.2.2算法的表示 73
3.2.3算法性能的測評 75
3.3窮舉法思想 75
3.3.1基本概念 75
3.3.2尋找給定區間的素數 76
3.3.3TOM的借書方案 77
3.4遞歸與分治思想 78
3.4.1基本概念 78
3.4.2計算整數的劃分數 79
3.4.3遞歸的折半查找算法 82
3.5貪心算法思想 84
3.5.1基本概念 84
3.5.2最優裝船問題 85
3.6回溯法 87
3.6.1基本概念 88
3.6.2四皇后問題求解 89
3.7數值機率算法 93
3.7.1基本概念 93
3.7.2計算定積分 93
第2部分編程實例解析
第4章編程基本功 96
4.1字元類型統計器 96
4.2計算字元的ASCII碼 97
4.3嵌套if-else語句的妙用 98
4.4基於switch語句的解碼器 100
4.5判斷閏年 101
4.6指針變數作參數 102
4.7矩陣的轉置運算 103
4.8矩陣的乘法運算 105
4.9巧用位運算 107
4.10檔案的讀寫 108
4.11計算檔案的大小 109
4.12記錄程式的運行時間 110
4.13十進制/二進制轉化器 111
4.14列印特殊圖案 113
4.15列印楊輝三角 115
4.16複雜級數的前n項和 117
4.17尋找矩陣中的“鞍點” 118
4.18n階勒讓德多項式求解 120
4.19遞歸反向輸出字元串 121
4.20一年中的第幾天 123
第5章數學趣題(一) 125
5.1舍罕王的失算 125
5.2求兩個數的最大公約數和最低公倍數 126
5.3歌德巴赫猜想的近似證明 127
5.4三色球問題 130
5.5百錢買百雞問題 132
5.6判斷迴文數字 133
5.7填數字遊戲求解 135
5.8新郎和新娘 137
5.9愛因斯坦的階梯問題 139
5.10尋找水仙花數 141
5.11猴子吃桃問題 142
5.12兔子產仔問題 143
5.13分解質因數 144
5.14常勝將軍 146
5.15求π的近似值 148
5.16魔幻方陣 151
5.17移數字遊戲 154
5.18數字的全排列 156
5.19完全數 158
5.20親密數 159
5.21數字翻譯器 162
5.22遞歸實現數制轉換 164
5.23誰在說謊 167
第6章數學趣題(二) 169
6.1連續整數固定和問題 169
6.2表示成兩個數的平方和 171
6.3具有特殊性質的數 173
6.4驗證角谷猜想 174
6.5驗證四方定理 176
6.6遞歸法尋找最小值 179
6.7尋找同構數 181
6.8驗證尼科徹斯定理 183
6.9三重回文數字 185
6.10馬克思手稿中的數學題 187
6.11漁夫捕魚問題 188
6.12尋找假幣 189
6.13計算組合數 193
6.14遞歸法求冪 194
6.15漢諾Hanoi塔 196
6.16選美比賽 198
第7章數據結構趣題 203
7.1順序表的就地逆置 203
7.2動態數列排序 205
7.3在原表空間進行鍊表的歸併 208
7.4約瑟夫環 213
7.5二進制/八進制轉換器 217
7.6回文字元串的判定 222
7.7括弧匹配 226
7.8魔王語言翻譯 229
7.9動態雙向鍊表的套用 234
7.10判斷完全二叉樹 239
7.11動畫模擬創建二叉樹 244
7.12列印符號三角形 247
7.13遞歸函式的非遞歸求解 251
7.14任意長度整數加法 254
第8章數值計算問題 262
8.1遞推化梯形法求解定積分 262
8.2求解低階定積分 265
8.3疊代法開平方運算 268
8.4牛頓法解方程 271
8.5歐拉方法求解微分方程 273
8.6改進的歐拉方法求解微分方程 275
8.7雅可比疊代公式求解線性方程組 278
第9章綜合題 282
9.1破碎的砝碼 282
9.2計算24的問題 285
9.3馬踏棋盤 291
9.40-1背包問題 296
9.5八皇后問題求解 302
9.6簡易檔案加密/解密系統 306
第10章算法設計與數據結構面試題精粹 315
10.1常見的算法設計題 315
10.2常見的數據結構題 354
目錄