數據結構三重門:強效入門·考研通關·編程實踐

  • 出版商: 清華大學
  • 出版日期: 2026-05-01
  • 售價: $534
  • 語言: 簡體中文
  • ISBN: 7302715696
  • ISBN-13: 9787302715696
  • 相關分類: Algorithms-data-structures
  • 下單後立即進貨 (約4週~6週)

  • 數據結構三重門:強效入門·考研通關·編程實踐-preview-1
  • 數據結構三重門:強效入門·考研通關·編程實踐-preview-2
  • 數據結構三重門:強效入門·考研通關·編程實踐-preview-3
數據結構三重門:強效入門·考研通關·編程實踐-preview-1

相關主題

商品描述

"本書圍繞“初學者學數據結構為什麼難”這一痛點展開,致力於解決學習中常見的“理論抽象、代碼晦澀、實踐與概念脫節”等問題,提供一條循序漸進、清晰易懂的學習路徑。全書以 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