数据结构算法——Visual C++ 6.0程序集

数据结构算法——Visual C++ 6.0程序集

数据结构算法——Visual C++ 6.0程序集 



GITHUB: https://github.com/jash-git/ISBN-7-5084-2956-7


作 译 者:侯识忠 等编著
书  号:ISBN 7-5084-2956-7
出版时间:2005年05月第1版第1次印刷

目    录

第一章  顺序存储结构的表、堆栈和队列
1、0  线性表的数组表示和实现…………………………………………..1
1、1  线性表的动态分配顺序表示和实现………………………………..7
1、2  顺序堆栈的类定义(动态分配)和实现…………………………….14
1、3  顺序堆栈的类定义(动态分配)和实现…………………………….17
1、4  顺序堆栈的类定义(数组表示)和实现…………………………….20
1、5  将中缀表达式转换为后缀表达式………………………………….22
1、6  十进制数转换成八进制数………………………………………….24
1、7  括号匹配的检验…………………………………………………….25
1、8  行编辑程序………………………………………………………….26
1、9  行编辑程序………………………………………………………….27
1、10  表达式求值………………………………………………………..30
1、11 顺序循环队列的类定义(数组表示)和实现……………………….32
1、12 顺序循环队列的类定义(动态分配)和实现……………………….34
1、13 循环双端队列顺序表示和实现……………………………………36
1、14 不考虑优先级相同元素的先进先出问题的顺序优先级队列……38
1、15 考虑优先级相同元素的先进先出问题的顺序优先级队列………40

第二章  链式存储结构的表、堆栈和队列
2、0  单链表的链式表示和实现………………………………………..  44
2、1  链式堆栈的类定义(动态分配)和实现……………………………  51
2、2  后缀表达式求值…………………………………………………..  54
2、3  链式队列的类定义和实现………………………………………..  56
2、4  单循环链表类定义和实现  ………………………………………  59
2、5  双向循环链表的类定义和实现…………………………………..  67
2、6  迷宫求解  …………………………………………………………  76

第三章 数组、串和广义表
3、0  变长参数表的应用………………………………………………..  80
3、1  建立一维、二维数组的类定义和实现…………………………..  83
3、2  稀疏矩阵的类定义与操作………………………………………..  86
3、3  十字链表的定义与相关操作……………………………………..  92
3、4  十字链表的定义与相关操作……………………………………..  95
3、5  十字链表的定义与相关操作……………………………………..  97
3、6  十字链表的定义与相关操作……………………………………..  99
3、7  广义表的类定义和实现  ……………………………………….. 101
3、8  字符串的模式匹配………………………………………………. 111
3、9 串模式匹配的类定义和实现…………………………………….. 114

第四章  递归
4、0  递归运算(栈的应用)……………………………………………. 117
4、1  使用回溯法求解迷宫问题……………………………………… 118

第五章  树和二叉树
5、0  树的类定义和实现……………………………………………… 121
5、1  二叉树的类定义和实现………………………………………… 126
5、2  二叉树的类定义和实现………………………………………… 132
5、3  二叉搜索树的类定义和实现…………………………………… 139
5、4  二叉搜索树的类定义和实现  …………………………………. 145
5、5  二叉搜索树的类定义和实现  …………………………………. 151
5、6  线索二叉树类定义和实现  ……………………………………. 159
5、7  线索二叉树类定义和实现  ……………………………………. 164
5、8  线索二叉树类定义和实现  ……………………………………..169
5、9  赫夫曼树与赫夫曼编码………………………………………….172
5、10 赫夫曼树与赫夫曼编码  ……………………………………… 175
5、11 赫夫曼树与赫夫曼编码  ……………………………………… 177
5、12 线性表的动态分配顺序表示和实现  ………………………… 179
5、13 最小堆的类定义和实现  ……………………………………… 180
5、14 利用最小堆相关操作进行堆排序  …………………………… 184
5、15 最大堆的类定义和实现  ……………………………………… 185
5、16 利用最大堆相关操作进行堆排序  …………………………… 189

第六章  图
6、0  图的类定义和实现……………………………………………….191
6、1  图的类定义和实现……………………………………………….199
6、2  图的类定义和实现……………………………………………….208
6、3  利用普里姆算法求出用邻接矩阵表示的图的最小生成树…….217
6、4  利用克鲁斯卡尔方法求边集数组所示图的最小生成树………..222
6、5  狄克斯特拉算法、从一个顶点到其余各顶点的最短路径 …….227
6、6  最短路径(从一个顶点到其余各顶点的最短路径)..…………….229
6、7  最短路径(所有顶点之间的最短路径)……………………………231
6、8  最短路径(所有顶点之间的最短路径)……………………………233
6、9  最短路径(弗洛伊德算法、所有顶点之间的最短路径)………… 236
6、10 最短路径(弗洛伊德算法、所有顶点之间的最短路径)…….. …239
6、11 拓扑排序…………………………………………………………  242

第七章  排序
7、0  桶排序(bucketsort.cpp)…………………………………. 245
7、1  插入排序法(类方法)(charufa1.cpp)……………………. 247
7、2  插入排序法(类方法)(charufa2.cpp)……………………. 248
7、3  插入排序法(charufa3.cpp)……………………………….250
7、4  希尔排序法(类方法)(xierfa1.cpp)………………………. 251
7、5  希尔排序(xierfa2.cpp) …………………………………. .253
7、6  快速排序(类方法)(kuaisufa1.cpp)……………………………254
7、7  快速排序(类方法)(kuaisufa2.cpp)……………………………256
7、8  快速排序(kuaisufa3.cpp)……………………………………..257
7、9  快速排序(kuaisufa4.cpp)……………………………………..259
7、10 通用选择排序法(xuanze.cpp)………………………………..260
7、11 选择排序(xuanze1.cpp)……………………………………….261
7、12 选择排序法(下沉)(xuanze2.cpp)…………………………… 262
7、13 选择排序法(类方法)(xuanze3.cpp)………………………….263
7、14 选择排序法(函数模板、排序不改变原数组各元素的值))….265
7、15 选择排序法(函数模板、上浮)(xuanze4f.cpp) ……………..266
7、16 选择排序法(排序后不改变原数组各元素的值) …………….268
7、17 通用冒泡排序法(下沉)(maopao1.cpp)………………………269
7、18 冒泡排序法(上浮)(maopao2.cpp)……………………………270
7、19 冒泡排序法(下沉)(maopao3.cpp)……………………………271
7、20 通用冒泡排序法(上浮)(maopao4.cpp)………………………272
7、21 归并排序(类方法)(guibingfa1.cpp) ………………………….274
7、22 归并排序法(guibingfa2.cpp) …………………………………276
7、23 堆排序法(类方法)(duifa1.cpp) ………………………………277
7、24 堆排序法(duifa2.cpp) ………………………………………..279
7、25 堆排序法(迭代器)(duifa3.cpp) ………………………………280
7、26 基数排序法(类方法)(jishufa1.cpp) ………………………….282
7、27 基数排序法(函数模板)(jishufa2.cpp) ……………………….283
7、28 锦标赛排序法(JinBiaoSai.cpp) ………………………………284
7、29 多种排序方法(DZpaixu.cpp)……………………………………286
7、30 K路平衡归并(K_WayBM.cpp)………………………………… 290
7、31 对外存文件(磁盘文件)进行选择排序的算法(WSortM.cpp) …292
7、32 外存文件的排序操作(二路平衡归并)(WSort1.cpp) ………….294

第八章  查找
8、0  二分查找法(递归调用)(erfenfa1.cpp) ………………………….298
8、1  二分查找法(非递归调用)(erfenfa2.cpp) ……………………….298
8、2  二叉排序树的类定义与实现 …………………………………….299
8、3  Fibonacci查找法(Fibonaci.cpp)…………………………………303
8、4  平衡二叉搜索树类定义与实现…………………………………..304
8、5  顺序表的查找(chazhao.cpp)…………………………………….311
8、6  B-树的操作………………………………………………………..314
8、7  B-树的(类方法)操作…………………………………………….  318
8、8  哈希表……………………………………………………………. 323
8、9  散列表类定义与实现……………………………………………. 326

第九章  文件
9、0  散列文件的插入、删除和查找操作……………………………. 332
9、1  索引文件的相关操作……………………………………………. 342
参考文献………………………………………………………………….353

—————–

目    錄

第一章  順序存儲結構的表、堆疊和佇列
1、0  線性表的陣列表示和實現…………………………………………..1
1、1  線性表的動態分配順序表示和實現………………………………..7
1、2  順序堆疊的類定義(動態分配)和實現…………………………….14
1、3  順序堆疊的類定義(動態分配)和實現…………………………….17
1、4  順序堆疊的類定義(陣列表示)和實現…………………………….20
1、5  將中綴運算式轉換為尾碼運算式………………………………….22
1、6  十進位數字轉換成八進位數………………………………………….24
1、7  括弧匹配的檢驗…………………………………………………….25
1、8  行編輯程式………………………………………………………….26
1、9  行編輯程式………………………………………………………….27
1、10  運算式求值………………………………………………………..30
1、11 順序迴圈佇列的類定義(陣列表示)和實現……………………….32
1、12 順序迴圈佇列的類定義(動態分配)和實現……………………….34
1、13 迴圈雙端佇列順序表示和實現……………………………………36
1、14 不考慮優先順序相同元素的先進先出問題的順序優先順序佇列……38
1、15 考慮優先順序相同元素的先進先出問題的順序優先順序佇列………40

第二章  鏈式存儲結構的表、堆疊和佇列
2、0  單鏈表的鏈式表示和實現………………………………………..  44
2、1  鏈式堆疊的類定義(動態分配)和實現……………………………  51
2、2  尾碼運算式求值…………………………………………………..  54
2、3  鏈式佇列的類定義和實現………………………………………..  56
2、4  單迴圈鏈表類定義和實現  ………………………………………  59
2、5  雙向迴圈鏈表的類定義和實現…………………………………..  67
2、6  迷宮求解  …………………………………………………………  76

第三章 陣列、串和廣義表
3、0  變長參數表的應用………………………………………………..  80
3、1  建立一維、二維陣列的類定義和實現…………………………..  83
3、2  疏鬆陣列的類定義與操作………………………………………..  86
3、3  十字鏈表的定義與相關操作……………………………………..  92
3、4  十字鏈表的定義與相關操作……………………………………..  95
3、5  十字鏈表的定義與相關操作……………………………………..  97
3、6  十字鏈表的定義與相關操作……………………………………..  99
3、7  廣義表的類定義和實現  ……………………………………….. 101
3、8  字串的模式匹配………………………………………………. 111
3、9 串模式匹配的類定義和實現…………………………………….. 114

第四章  遞迴
4、0  遞迴運算(棧的應用)……………………………………………. 117
4、1  使用回溯法求解迷宮問題……………………………………… 118

第五章  樹和二叉樹
5、0  樹的類定義和實現……………………………………………… 121
5、1  二叉樹的類定義和實現………………………………………… 126
5、2  二叉樹的類定義和實現………………………………………… 132
5、3  二叉搜尋樹的類定義和實現…………………………………… 139
5、4  二叉搜尋樹的類定義和實現  …………………………………. 145
5、5  二叉搜尋樹的類定義和實現  …………………………………. 151
5、6  線索二叉樹類定義和實現  ……………………………………. 159
5、7  線索二叉樹類定義和實現  ……………………………………. 164
5、8  線索二叉樹類定義和實現  ……………………………………..169
5、9  赫夫曼樹與赫夫曼編碼………………………………………….172
5、10 赫夫曼樹與赫夫曼編碼  ……………………………………… 175
5、11 赫夫曼樹與赫夫曼編碼  ……………………………………… 177
5、12 線性表的動態分配順序表示和實現  ………………………… 179
5、13 最小堆的類定義和實現  ……………………………………… 180
5、14 利用最小堆相關操作進行堆排序  …………………………… 184
5、15 最大堆的類定義和實現  ……………………………………… 185
5、16 利用最大堆相關操作進行堆排序  …………………………… 189

第六章  圖
6、0  圖的類定義和實現……………………………………………….191
6、1  圖的類定義和實現……………………………………………….199
6、2  圖的類定義和實現……………………………………………….208
6、3  利用普裡姆演算法求出用鄰接矩陣表示的圖的最小生成樹…….217
6、4  利用克魯斯卡爾方法求邊集陣列所示圖的最小生成樹………..222
6、5  狄克斯特拉演算法、從一個頂點到其餘各頂點的最短路徑 …….227
6、6  最短路徑(從一個頂點到其餘各頂點的最短路徑)..…………….229
6、7  最短路徑(所有頂點之間的最短路徑)……………………………231
6、8  最短路徑(所有頂點之間的最短路徑)……………………………233
6、9  最短路徑(佛洛德演算法、所有頂點之間的最短路徑)………… 236
6、10 最短路徑(佛洛德演算法、所有頂點之間的最短路徑)…….. …239
6、11 拓撲排序…………………………………………………………  242

第七章  排序
7、0  桶排序(bucketsort.cpp)…………………………………. 245
7、1  插入排序法(類方法)(charufa1.cpp)……………………. 247
7、2  插入排序法(類方法)(charufa2.cpp)……………………. 248
7、3  插入排序法(charufa3.cpp)……………………………….250
7、4  希爾排序法(類方法)(xierfa1.cpp)………………………. 251
7、5  希爾排序(xierfa2.cpp) …………………………………. .253
7、6  快速排序(類方法)(kuaisufa1.cpp)……………………………254
7、7  快速排序(類方法)(kuaisufa2.cpp)……………………………256
7、8  快速排序(kuaisufa3.cpp)……………………………………..257
7、9  快速排序(kuaisufa4.cpp)……………………………………..259
7、10 通用選擇排序法(xuanze.cpp)………………………………..260
7、11 選擇排序(xuanze1.cpp)……………………………………….261
7、12 選擇排序法(下沉)(xuanze2.cpp)…………………………… 262
7、13 選擇排序法(類方法)(xuanze3.cpp)………………………….263
7、14 選擇排序法(函數範本、排序不改變原陣列各元素的值))….265
7、15 選擇排序法(函數範本、上浮)(xuanze4f.cpp) ……………..266
7、16 選擇排序法(排序後不改變原陣列各元素的值) …………….268
7、17 通用冒泡排序法(下沉)(maopao1.cpp)………………………269
7、18 冒泡排序法(上浮)(maopao2.cpp)……………………………270
7、19 冒泡排序法(下沉)(maopao3.cpp)……………………………271
7、20 通用冒泡排序法(上浮)(maopao4.cpp)………………………272
7、21 歸併排序(類方法)(guibingfa1.cpp) ………………………….274
7、22 歸併排序法(guibingfa2.cpp) …………………………………276
7、23 堆排序法(類方法)(duifa1.cpp) ………………………………277
7、24 堆排序法(duifa2.cpp) ………………………………………..279
7、25 堆排序法(反覆運算器)(duifa3.cpp) ………………………………280
7、26 基數排序法(類方法)(jishufa1.cpp) ………………………….282
7、27 基數排序法(函數範本)(jishufa2.cpp) ……………………….283
7、28 錦標賽排序法(JinBiaoSai.cpp) ………………………………284
7、29 多種排序方法(DZpaixu.cpp)……………………………………286
7、30 K路平衡歸併(K_WayBM.cpp)………………………………… 290
7、31 對外存檔(磁片檔)進行選擇排序的演算法(WSortM.cpp) …292
7、32 外存檔的排序操作(二路平衡歸併)(WSort1.cpp) ………….294

第八章  查找
8、0  二分查找法(遞迴呼叫)(erfenfa1.cpp) ………………………….298
8、1  二分查找法(非遞迴呼叫)(erfenfa2.cpp) ……………………….298
8、2  二叉排序樹的類定義與實現 …………………………………….299
8、3  Fibonacci查找法(Fibonaci.cpp)…………………………………303
8、4  平衡二叉搜尋樹類定義與實現…………………………………..304
8、5  順序表的查找(chazhao.cpp)…………………………………….311
8、6  B-樹的操作………………………………………………………..314
8、7  B-樹的(類方法)操作…………………………………………….  318
8、8  雜湊表……………………………………………………………. 323
8、9  散列表類定義與實現……………………………………………. 326

第九章  文件
9、0  散列檔的插入、刪除和查找操作……………………………. 332
9、1  索引檔的相關操作……………………………………………. 342
參考文獻………………………………………………………………….353

2 thoughts on “数据结构算法——Visual C++ 6.0程序集

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *