數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版 第2版)一些代碼實(shí)現(xiàn)

PS:
數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版 第2版)簡(jiǎn)單實(shí)現(xiàn):https://github.com/Akaiamerin/FK/blob/main/9787115379504/demo
數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版 第2版)算法設(shè)計(jì)題:https://github.com/Akaiamerin/FK/blob/main/9787115379504/algorithm_design
目錄中所有「加粗」的位置均進(jìn)行了相應(yīng)的代碼實(shí)現(xiàn)(文件可直接運(yùn)行)。
某些文件使用了「srand((unsigned)time(NULL))」進(jìn)行隨機(jī)數(shù)生成,若想進(jìn)行手動(dòng)的輸入可通過查找定位「rand()」的位置進(jìn)行相應(yīng)的修改。
某些文件特別是「第5章 樹和二叉樹」和「第6章 圖」的文件都提供了相應(yīng)的輸入用例,這些例子均可在書上找到(也許吧)。
少數(shù)文件使用了 C++ 中的 STL 容器庫(kù)。
代碼實(shí)現(xiàn)過程中的參考:
https://www.cnblogs.com/skywang12345/p/3603935.html
https://blog.csdn.net/u013749051/category_10332769.html
第 1 章 緒論
1.1 數(shù)據(jù)結(jié)構(gòu)的研究?jī)?nèi)容
1.2 基本概念和術(shù)語(yǔ)
1.2.1 數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)項(xiàng)和數(shù)據(jù)對(duì)象
1.2.2 數(shù)據(jù)結(jié)構(gòu)
1.2.3 數(shù)據(jù)類型和抽象數(shù)據(jù)類型
1.3 抽象數(shù)據(jù)類型的表示與實(shí)現(xiàn)
1.4 算法和算法分析
1.4.1 算法的定義及特性
1.4.2 評(píng)價(jià)算法優(yōu)劣的基本標(biāo)準(zhǔn)
1.4.3 算法的時(shí)間復(fù)雜度
1.4.4 算法的空間復(fù)雜度
1.5 小結(jié)
習(xí)題
第 2 章 線性表
2.1 線性表的定義和特點(diǎn)
2.2 案例引入
2.3 線性表的類型定義
2.4 線性表的順序表示和實(shí)現(xiàn)
2.4.1 線性表的順序存儲(chǔ)表示
2.4.2 順序表中基本操作的實(shí)現(xiàn)
2.5 線性表的鏈?zhǔn)奖硎竞蛯?shí)現(xiàn)
2.5.1 單鏈表的定義和表示
2.5.2 單鏈表基本操作的實(shí)現(xiàn)
2.5.3 循環(huán)鏈表
2.5.4 雙向鏈表
2.6 順序表和鏈表的比較
2.6.1 空間性能的比較
2.6.2 時(shí)間性能的比較
2.7 線性表的應(yīng)用
2.7.1 線性表的合并
2.7.2 有序表的合并
2.8 案例分析與實(shí)現(xiàn)
2.9 小結(jié)
習(xí)題
第 3 章 棧和隊(duì)列
3.1 棧和隊(duì)列的定義和特點(diǎn)
3.1.1 棧的定義和特點(diǎn)
3.1.2 隊(duì)列的定義和特點(diǎn)
3.2 案例引入
3.3 棧的表示和操作的實(shí)現(xiàn)
3.3.1 棧的類型定義
3.3.2 順序棧的表示和實(shí)現(xiàn)
3.3.3 鏈棧的表示和實(shí)現(xiàn)
3.4 棧與遞歸
3.4.1 采用遞歸算法解決的問題
3.4.2 遞歸過程與遞歸工作棧
3.4.3 遞歸算法的效率分析
3.4.4 將遞歸轉(zhuǎn)換為非遞歸的方法
3.5 隊(duì)列的表示和操作的實(shí)現(xiàn)
3.5.1 隊(duì)列的類型定義
3.5.2 循環(huán)隊(duì)列——隊(duì)列的順序表示和實(shí)現(xiàn)
3.5.3 鏈隊(duì)——隊(duì)列的鏈?zhǔn)奖硎竞蛯?shí)現(xiàn)
3.6 案例分析與實(shí)現(xiàn)
3.7 小結(jié)
習(xí)題
第 4 章 串、數(shù)組和廣義表
4.1 串的定義
4.2 案例引入
4.3 串的類型定義、存儲(chǔ)結(jié)構(gòu)及其運(yùn)算
4.3.1 串的抽象類型定義
4.3.2 串的存儲(chǔ)結(jié)構(gòu)
4.3.3 串的模式匹配算法
4.4 數(shù)組
4.4.1 數(shù)組的類型定義
4.4.2 數(shù)組的順序存儲(chǔ)
4.4.3 特殊矩陣的壓縮存儲(chǔ)
4.5 廣義表
4.5.1 廣義表的定義
4.5.2 廣義表的存儲(chǔ)結(jié)構(gòu)
4.6 案例分析與實(shí)現(xiàn)
4.7 小結(jié)
習(xí)題
第 5 章 樹和二叉樹
5.1 樹和二叉樹的定義
5.1.1 樹的定義
5.1.2 樹的基本術(shù)語(yǔ)
5.1.3 二叉樹的定義
5.2 案例引入
5.3 樹和二叉樹的抽象數(shù)據(jù)類型定義
5.3.1 樹的抽象數(shù)據(jù)類型定義
5.4 二叉樹的性質(zhì)和存儲(chǔ)結(jié)構(gòu)
5.4.1 二叉樹的性質(zhì)
5.4.2 二叉樹的存儲(chǔ)結(jié)構(gòu)
5.5 遍歷二叉樹和線索二叉樹
5.5.1 遍歷二叉樹
5.5.2 線索二叉樹
5.6 樹和森林
5.6.1 樹的存儲(chǔ)結(jié)構(gòu)
5.6.2 森林與二叉樹的轉(zhuǎn)換
5.6.3 樹和森林的遍歷
5.7 哈夫曼樹及其應(yīng)用
5.7.1 哈夫曼樹的基本概念
5.7.2 哈夫曼樹的構(gòu)造算法
5.7.3 哈夫曼編碼
5.8 案例分析與實(shí)現(xiàn)
5.9 小結(jié)
習(xí)題
第 6 章 圖
6.1 圖的定義和基本術(shù)語(yǔ)
6.1.1 圖的定義
6.1.2 圖的基本術(shù)語(yǔ)
6.2 案例引入
6.3 圖的類型定義
6.4 圖的存儲(chǔ)結(jié)構(gòu)
6.4.1 鄰接矩陣
6.4.2 鄰接表
6.4.3 十字鏈表
6.4.4 鄰接多重表
6.5 圖的遍歷
6.5.1 深度優(yōu)先搜索
6.5.2 廣度優(yōu)先搜索
6.6 圖的應(yīng)用
6.6.1 最小生成樹
6.6.2 最短路徑
6.6.3 拓?fù)渑判?br> 6.6.4 關(guān)鍵路徑
6.7 案例分析與實(shí)現(xiàn)
6.8 小結(jié)
習(xí)題
第 7 章 查找
7.1 查找的基本概念
7.2 線性表的查找
7.2.1 順序查找
7.2.2 折半查找
7.2.3 分塊查找
7.3 樹表的查找
7.3.1 二叉排序樹
7.3.2 平衡二叉樹
7.3.3 B-樹
7.3.4 B+樹
7.4 散列表的查找
7.4.1 散列表的基本概念
7.4.2 散列函數(shù)的構(gòu)造方法
7.4.3 處理沖突的方法
7.4.4 散列表的查找
7.5 小結(jié)
習(xí)題
第 8 章 排序
8.1 基本概念和排序方法的概述
8.1.1 排序的基本概念
8.1.2 內(nèi)部排序方法的分類
8.1.3 待排序記錄的存儲(chǔ)方式
8.1.4 排序算法效率的評(píng)價(jià)指標(biāo)
8.2 插入排序
8.2.1 直接插入排序
8.2.2 折半插入排序
8.2.3 希爾排序
8.3 交換排序
8.3.1 冒泡排序
8.3.2 快速排序
8.4 選擇排序
8.4.1 簡(jiǎn)單選擇排序
8.4.2 樹形選擇排序
8.4.3 堆排序
8.5 歸并排序
8.6 基數(shù)排序
8.6.1 多關(guān)鍵字的排序
8.6.2 鏈?zhǔn)交鶖?shù)排序
8.7 外部排序
8.7.1 外部排序的基本方法
8.7.2 多路平衡歸并的實(shí)現(xiàn)
8.7.3 置換-選擇排序
8.7.4 最佳歸并樹
8.8 小結(jié)
習(xí)題