數據結構三重門:強效入門·考研通關·編程實踐
- 出版商: 清華大學
- 出版日期: 2026-05-01
- 售價: $534
- 語言: 簡體中文
- ISBN: 7302715696
- ISBN-13: 9787302715696
-
相關分類:
Algorithms-data-structures
下單後立即進貨 (約4週~6週)
相關主題
商品描述
"本書圍繞“初學者學數據結構為什麼難”這一痛點展開,致力於解決學習中常見的“理論抽象、代碼晦澀、實踐與概念脫節”等問題,提供一條循序漸進、清晰易懂的學習路徑。全書以 C 語言為主要描述語言,系統講解從線性表、棧與隊列、樹與二叉樹、圖,到查找與排序等核心內容;每章都包含概念講解、代碼實現、實例分析以及小結,讀者既能用通俗案例建立直觀理解,也能直接運行書中經過完整調試的代碼,在動手實踐中體會不同數據結 構的價值。與偏重理論推導的教材不同,本書強調“深入淺出、學以致用”,在關鍵難點處配合類比、圖示與分步提示,幫助讀者自然跨越理解障礙。 本書適合學習過一門編程語言的讀者,包括計算機專業的本科學生、想轉行做開發的非專業人員、為計算機專業考研做準備的學生。"
作者簡介
孫遜,北京航空航天大學軟件工程碩士,高級大數據工程師曾被授予西安交通大學研究生院特聘專家、百度技術學院特約講師、阿裏雲大學認證駐場講師10余年互聯網教育行業經驗,曾在北京航空航天大學、西安交通大學、南京大學、南京航空航天大學、大連理工大學、貴州大學、山東大學等國內多所高校教授雲計算、大數據、人工智能等相關專業的本科生、研究生課程,授課風格以風趣幽默、深入淺出見長,深受學生喜愛;
目錄大綱
目錄
第1章 前置知識點梳理 / 001
1.1 指針 / 001
1.1.1 指針有什麼用 / 001
1.1.2 指針的聲明 / 002
1.1.3 指針的賦值 / 002
1.1.4 解引用指針 / 003
1.1.5 指針簡單應用:兩個變量值的交換 / 004
1.1.6 野指針與空指針 / 006
1.2 動態內存分配 / 007
1.2.1 內存布局 / 007
1.2.2 動態內存分配實現 / 008
1.2.3 二級指針 / 010
1.3 結構體 / 011
1.3.1 結構體的定義 / 012
1.3.2 結構體的初始化與使用 / 012
1.3.3 結構體與指針 / 013
1.3.4 typedef / 014
1.4 本章小結 / 016
第2章 數據結構概述 / 017
2.1 數據與結構 / 017
2.1.1 什麼是數據? / 017
2.1.2 什麼是結構? / 017
2.2 數據結構中的數據與常規數據的區別 / 018
2.3 數據結構與算法的關系 / 018
2.4 算法分析 / 019
2.4.1 算法的時間復雜度與語句頻度 / 020
2.4.2 算法的時間復雜度定義 / 021
2.4.3 最好、最壞和平均時間復雜度 / 022
2.4.4 不同算法時間復雜度舉例 / 023
2.4.5 算法的空間復雜度 / 029
2.5 本章小結 / 031
第3章 線性表 / 032
3.1 線性表的順序表示與實現 / 032
3.1.1 順序表的結構與表示 / 033
3.1.2 順序表的基本操作 / 034
3.2 線性表的鏈式表示與實現 / 043
3.2.1 鏈表的結構與表示 / 044
3.2.2 單鏈表 / 045
3.2.3 循環鏈表 / 058
3.2.4 雙向鏈表 / 064
3.3 順序表與鏈表的對比 / 070
3.4 本章小結 / 071
第4章 棧與隊列 / 072
4.1 棧的表示與實現 / 072
4.1.1 棧的定義 / 072
4.1.2 棧的順序結構實現 / 074
4.1.3 棧的鏈式結構實現 / 080
4.1.4 棧與遞歸:隱藏在背後的“棧結構” / 084
4.1.5 棧在表達式求值中的應用 / 090
4.2 隊列的表示與實現 / 098
4.2.1 隊列的定義 / 098
4.2.2 隊列的順序結構實現 / 101
4.2.3 循環隊列:解決“假溢出”的優雅方案 / 107
4.2.4 隊列的鏈式結構實現 / 109
4.3 棧與隊列的對比 / 114
4.4 本章小結 / 115
第5章 樹與二叉樹 / 116
5.1 樹與二叉樹的定義 / 116
5.1.1 樹的定義 / 116
5.1.2 二叉樹的定義 / 117
5.1.3 特殊二叉樹 / 118
5.2 二叉樹的實現與遍歷 / 120
5.2.1 二叉樹的存儲結構 / 120
5.2.2 二叉樹的遍歷 / 123
5.2.3 二叉樹的遍歷代碼實現-遞歸方式 / 127
5.2.4 二叉樹的遍歷代碼實現-非遞歸方式 / 128
5.2.5 根據遍歷結果推導二叉樹 / 133
5.2.6 線索二叉樹 / 135
5.3 哈夫曼樹 / 141
5.3.1 案例引入 / 142
5.3.2 哈夫曼樹的基本概念 / 143
5.3.3 哈夫曼樹的定義與構造 / 144
5.3.4 哈夫曼樹的代碼實現 / 145
5.3.5 哈夫曼編碼 / 147
5.4 樹、二叉樹與森林 / 151
5.4.1 樹與二叉樹的轉換 / 152
5.4.2 森林與二叉樹的轉換 / 154
5.4.3 樹、森林、二叉樹的遍歷 / 156
5.5 本章小結 / 157
第6章 圖 / 158
6.1 圖的基本概念 / 159
6.1.1 圖的定義 / 159
6.1.2 圖的基本術語 / 160
6.2 圖的存儲結構 / 163
6.2.1 鄰接矩陣 / 164
6.2.2 鄰接表 / 169
6.2.3 十字鏈表 / 178
6.2.4 鄰接多重表 / 182
6.3 圖的遍歷 / 184
6.3.1 深度優先遍歷 / 185
6.3.2 廣度優先遍歷 / 189
6.4 最小生成樹 / 192
6.4.1 普裏姆算法 / 193
6.4.2 克魯斯卡爾算法 / 198
6.5 最短路徑 / 203
6.5.1 迪傑斯特拉算法 / 204
6.5.2 弗洛伊德算法 / 208
6.6 拓撲排序與關鍵路徑 / 212
6.6.1 拓撲排序 / 213
6.6.2 關鍵路徑 / 220
6.7 本章小結 / 230
第7章 查找 / 231
7.1 線性表的查找 / 232
7.1.1 順序查找 / 233
7.1.2 折半查找 / 234
7.2 二叉排序樹 / 236
7.2.1 二叉排序樹的查找 / 237
7.2.2 二叉排序樹的插入與創建 / 240
7.2.3 二叉排序樹的刪除 / 243
7.3 平衡二叉樹 / 246
7.3.1 平衡二叉樹的定義與術語 / 247
7.3.2 平衡二叉樹的平衡調整方法 / 248
7.4 B樹與B+樹 / 254
7.4.1 B樹的操作 / 256
7.4.2 B+樹 / 263
7.5 散列表 / 264
7.5.1 散列表的相關概念 / 265
7.5.2 散列表函數的構造方法 / 267
7.5.3 散列表處理沖突的方法 / 268
7.5.4 散列表的查找 / 272
7.5.5 散列表平均查找長度的計算 / 272
7.6 本章小結 / 274
第8章 排序 / 275
8.1 簡單的排序算法 / 276
8.1.1 冒泡排序 / 276
8.1.2 插入排序 / 279
8.1.3 折半插入排序 / 281
8.1.4 簡單選擇排序 / 282
8.2 堆與堆排序 / 284
8.3 高效的排序算法 / 289
8.3.1 希爾排序 / 289
8.3.2 歸並排序 / 292
8.3.3 快速排序 / 295
8.4 基數排序 / 298
8.5 外部排序 / 302
8.5.1 外部排序基本思路 / 302
8.5.2 多路平衡歸並排序 / 305
8.5.3 置換-選擇排序 / 307
8.5.4 最佳歸並樹 / 309
8.6 本章小結 / 310



