《数据结构算法 C++Builder 6.0程序集》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:侯识忠等编著
  • 出 版 社:北京:中国水利水电出版社
  • 出版年份:2005
  • ISBN:7508429575
  • 页数:363 页
图书介绍:本书对数据结构问题的描述具有相对独立性,每一个程序都完整地包含了该数据结构问题的各种算法。本书采用C++语言描述具体的数据结构问题,所有程序都用C++ Builder 6.0调试通过,并输出程序运行结果。本书中的109个完整的可执行程序、源代码都收录在随书光盘中,程序可在光盘中直接执行,也可将光盘中的程序拷贝到硬盘D的一个子目录中运行。本书适合想要通过编程实例学习数据结构的C++程序员,也可作为高校师生学习计算机编程与数据结构的参考书。

前言 1

第1章 顺序存储结构的表、堆栈和队列 1

1.1 线性表的数组表示和实现 1

1.1.1 程序构思 1

1.1.2 线性表的类定义linelistl.h 1

目录 1

1.1.3 线性表的实现linelistl.cpp 2

1.1.4 线性表的测试linelistlm.cpp 5

1.1.5 linelistlm.cpp运行结果 7

1.2 线性表的动态分配顺序表示和实现 8

1.2.1 程序构思 8

1.1.6 分析 8

1.2.2 线性表的类定义linelist2.h 9

1.2.3 线性表的实现linelist2.cpp 10

1.2.4 线性表的测试linelist2m.cpp 13

1.2.5 linelist2m.cpp运行结果 15

1.2.6 分析 16

1.3 顺序堆栈的类定义(动态分配)和实现 16

1.3.1 程序构思 16

1.3.2 顺序栈的类定义stackl.h 16

1.3.3 顺序栈的实现stackl.cpp 17

1.3.4 顺序栈的测试stacklM.cpp 18

1.3.5 stacklM.cpp运行结果 19

1.4.2 顺序栈的类定义stack.h 20

1.4.1 程序构思 20

1.4 顺序堆栈的类定义(动态分配)和实现 20

1.4.3 顺序栈的实现stack.cpp 21

1.4.4 顺序栈的测试stackmain.cpp 21

1.4.5 stackmain.cpp运行结果 23

1.5 顺序堆栈的类定义(数组表示)和实现 23

1.5.1 程序构思 23

1.5.2 顺序堆栈的类定义linearStackl.h 23

1.5.3 顺序堆栈的实现linearStackl.cpp 24

1.5.4 顺序堆栈的测试linearStacklm.cpp 25

1.5.5 linearStacklm.cpp运行结果 26

1.5.6 分析 26

1.6 将中缀表达式转换为后缀表达式 26

1.7 十进制数转换成八进制数 28

1.8 括号匹配的检验 29

1.9 行编辑程序 30

1.10 行编辑程序 32

1.11 表达式求值 35

1.12 顺序循环队列的类定义(数组表示)和实现 37

1.12.1 程序构思 37

1.12.2 顺序循环队列的类定义queuel.h 37

1.12.3 顺序循环队列的实现queuel.cpp 37

1.12.4 顺序循环队列的测试queuelm.cpp 38

1.12.5 queuel m.cpp运行结果 39

1.13 顺序循环队列的类定义(动态分配)和实现 39

1.13.1 程序构思 39

1.13.3 顺序循环队列的实现queue2.cpp 40

1.13.2 顺序循环队列的类定义queue2.h 40

1.13.4 顺序循环队列的测试queue2m.cpp 41

1.13.5 queue2m.cpp运行结果 42

1.14 循环双端队列顺序表示和实现 42

1.14.1 程序构思 42

1.14.2 循环双端队列顺序表示duilie.cpp 42

1.14.3 循环双端队列实现 43

1.14.4 循环双端队列的测试 44

1.14.5 duilie.cpp运行结果 44

1.14.6 分析 44

1.15.2 不考虑优先级相同元素的先进先出问题的顺序优先级队列类定义SqPQueue.h 45

1.15.1 程序构思 45

1.15 不考虑优先级相同元素的先进先出问题的顺序优先级队列 45

1.15.3 顺序优先级队列的实现SqPQueue.cpp 46

1.15.4 顺序优先级队列的测试SqPQueuem.cpp 47

1.15.5 SqPQueuem.cpp运行结果 47

1.16 考虑优先级相同元素的先进先出问题的顺序优先级队列 48

1.16.1 程序构思 48

1.16.2 考虑优先级相同元素的先进先出问题的顺序优先级队列类定义SPQueue.h 48

1.16.3 顺序优先级队列的实现SPQueue.cpp 49

1.16.4 顺序优先级队列的测试SPQueuem.cpp 50

1.16.5 SPQueuem.cpp运行结果 50

1.16.6 分析 50

2.1.2 单链表的类定义linklist3.h 51

2.1.1 程序构思 51

第2章 链式存储结构的表、堆栈和队列 51

2.1 单链表的链式表示和实现 51

2.1.3 单链表的实现linklist3.cpp 52

2.1.4 单链表的测试linklist3m.cpp 56

2.1.5 linklist3m.cpp运行结果 57

2.1.6 分析 58

2.2 链式堆栈的类定义(动态分配)和实现 58

2.2.1 程序构思 58

2.2.2 链式堆栈的类定义linearStack2.h 58

2.2.3 链式堆栈的实现linearStack2.cpp 59

2.2.4 链式堆栈的测试linearStack2m.cpp 61

2.2.6 分析 62

2.3 后缀表达式求值 62

2.2.5 linearStack2m.cpp运行结果 62

2.4 链式队列的类定义和实现 63

2.4.1 程序构思 63

2.4.2 链式队列的类定义linqueue.h 64

2.4.3 链式队列的实现linqueue.cpp 64

2.4.4 链式队列的测试linqueuem.cpp 65

2.4.5 linqueuem.cpp运行结果 66

2.5 单循环链表类定义和实现 66

2.5.1 程序构思 66

2.5.2 单循环链表的类定义cirlinklist.h 67

2.5.3 单循环链表的实现cirlinklist.cpp 68

2.5.4 单循环链表的测试与应用cirlinklistm.cpp 71

2.5.5 cirlinklistm.cpp运行结果 73

2.6.1 程序构思 74

2.6 双向循环链表的类定义和实现 74

2.5.6 分析 74

2.6.2 双向循环链表的类定义dcirlinkl.h 75

2.6.3 双向循环链表的实现dcirlinkl.cpp 76

2.6.4 双向循环链表的测试与应用dcirlinklm.cpp 80

2.6.5 dcirlinklm.cpp运行结果 82

2.6.6 分析 83

2.7 迷宫求解 83

第3章 数组、串和广义表 87

3.1 变长参数表的应用 87

3.2 建立一维、二维数组的类定义和实现 88

3.2.1 程序构思 88

3.2.2 建立一维、二维数组的类定义intarray.h 88

3.2.3 建立一维、二维数组的类实现intarray.cpp 89

3.2.4 建立一维、二维数组的类测试intarraym.cpp 90

3.2.5 intarraym.cpp运行结果 91

3.3 稀疏矩阵的类定义与操作 91

3.3.1 程序构思 91

3.3.2 稀疏矩阵的类定义与操作xishu.h 91

3.3.3 稀疏矩阵相关操作的测试xishuM.cpp 94

3.3.4 xishuM.cpp运行结果 96

3.4 十字链表的定义与相关操作 97

3.4.1 程序构思 97

3.4.2 十字链表的定义与相关操作xishuMl.cpp 97

3.5.2 十字链表的类定义与相关操作xishuM2.cpp 99

3.5.1 程序构思 99

3.5 十字链表的定义与相关操作 99

3.4.3 十字链表的操作测试 99

3.4.4 xishuMl.cpp运行结果 99

3.5.3 十字链表相关操作的测试 101

3.5.4 xishuM2.cpp运行结果 101

3.6 十字链表的定义与相关操作 101

3.6.1 程序构思 101

3.6.2 十字链表的定义与相关操作xishuM3.cpp 101

3.6.3 十字链表相关操作的测试 103

3.6.4 xishuM3.cpp运行结果 103

3.7 十字链表的定义与相关操作 103

3.7.1 程序构思 103

3.7.2 十字链表的类定义与相关操作xishuM4.cpp 103

3.8 广义表的类定义和实现 105

3.8.1 程序构思 105

3.7.3 十字链表相关操作的测试 105

3.7.4 xishuM4.cpp运行结果 105

3.8.2 广义表的类定义guangyi.h 106

3.8.3 广义表的类实现guangyi.cpp 107

3.8.4 广义表的相关操作的测试guangyiM.cpp 113

3.8.5 guangyiM.cpp运行结果 115

3.8.6 分析 115

3.9 字符串的模式匹配 115

3.9.1 程序构思 115

3.9.2 字符串的模式匹配测试 117

3.9.3 Findstr.cpp运行结果 118

3.10.2 串模式匹配的类定义FindSub.cpp 119

3.10 串模式匹配的类定义和实现 119

3.10.1 程序构思 119

3.10.3 串模式匹配的类实现 120

3.10.4 串模式匹配的测试 121

3.10.5 FindSub.cpp运行结果 121

第4章 递归 123

4.1 递归运算(栈的应用) 123

4.1.1 程序构思 123

4.1.2 递归运算(栈的应用)Recurve.cpp 123

4.1.5 Recurve.cpp运行结果 124

4.1.6 分析 124

4.1.4 链式栈类操作测试 124

4.1.3 链式栈类实现 124

4.2 使用回溯法求解迷宫问题 125

4.2.1 程序构思 125

4.2.2 路口的结构体定义migong.cpp 125

4.2.3 迷宫类定义与实现 125

4.2.4 迷宫类的测试 126

4.2.5 migong.cpp运行结果 126

第5章 树和二叉树 127

5.1 树的类定义和实现 127

5.1.1 程序构思 127

5.1.2 树的孩子兄弟表示法为存储结构的结构体Tree.h 127

5.1.3 树类的实现Tree.cpp 128

5.1.4 树类相关操作的测试TreeM.cpp 131

5.1.5 TreeM.cpp运行结果 132

5.2.1 程序构思 133

5.2.2 二叉树类定义btree2.h 133

5.2 二叉树的类定义和实现 133

5.2.3 二叉树类的实现btree2.cpp 134

5.2.4 二叉树类相关操作的测试btree2M.cpp 138

5.2.5 btree2M.cpp运行结果 138

5.2.6 分析 139

5.3 二叉树的类定义和实现 139

5.3.1 程序构思 139

5.3.2 二叉树类定义btree.h 139

5.3.3 二叉树类的实现btree.cpp 140

5.3.4 二叉树类相关操作的测试btreeM.cpp 144

5.4 二叉搜索树的类定义和实现 145

5.4.1 程序构思 145

5.3.5 btreeM.cpp运行结果 145

5.3.6 分析 145

5.4.2 二叉搜索树的类定义BSTree.h 146

5.4.3 二叉搜索树类的实现BSTree.cpp 147

5.4.4 二叉搜索树相关操作的测试BSTreeM.cpp 150

5.4.5 BSTreeM.cpp运行结果 151

5.5 二叉搜索树的类定义和实现 152

5.5.1 程序构思 152

5.5.2 二叉搜索树的类定义与实现BSTREEl.h 152

5.5.3 二叉搜索树类的实现 153

5.5.4 二叉搜索树的类型测试BSTreelM.cpp 156

5.5.5 BSTreel M.cpp运行结果 157

5.6 二叉搜索树的类定义和实现 158

5.6.1 程序构思 158

5.6.2 二叉搜索树的类定义BSTreeF.h 158

5.6.3 二叉搜索树类的实现BSTreeF.cpp 159

5.6.4 二叉搜索树类的相关操作的测试BSTreeFM.cpp 164

5.6.5 BSTreeFM.cpp运行结果 165

5.7 线索二叉树类定义和实现 166

5.7.1 程序构思 166

5.7.2 线索二叉树结点类型存储结构体TBSTree.h 166

5.7.3 线索二叉树类的实现 167

5.7.4 线索二叉树类相关操作的测试TBSTreeM.cpp 170

5.7.5 TBSTreeM.cpp运行结果 171

5.8 线索二叉树类定义和实现 172

5.8.1 程序构思 172

5.8.2 线索二叉树结点类型存储结构体TBSTreel.h 172

5.8.3 线索二叉树类的实现 173

5.8.4 线索二叉树类相关操作的测试TBSTreelM.cpp 175

5.8.5 TBSTreelM.cpp运行结果 176

5.9 线索二叉树类定义和实现 176

5.9.1 程序构思 176

5.9.2 线索二叉树结点类型存储结构体TBSTree2.h 176

5.9.3 线索二叉树类与派生类的实现 178

5.9.4 线索二叉树类相关操作的测试TBSTree2M.cpp 180

5.10.2 赫夫曼树与赫夫曼编码Huffman.cpp 181

5.10.1 程序构思 181

5.10 赫夫曼树与赫夫曼编码 181

5.9.5 TBSTree2M.cpp运行结果 181

5.10.3 类实现 182

5.10.4 赫夫曼编码问题的测试 184

5.10.5 Huffman.cpp运行结果 184

5.11 赫夫曼树与赫夫曼编码 184

5.12 赫夫曼树与赫夫曼编码 186

5.13 线性表的动态分配顺序表示和实现 188

5.14 最小堆的类定义和实现 190

5.14.1 程序构思 190

5.14.2 最小堆的类定义minheap.h 190

5.14.3 最小堆的实现minheap.cpp 191

5.14.4 最小堆类的测试minheapm.cpp 192

5.14.5 minheapm.cpp运行结果 193

5.15 利用最小堆相关操作进行堆排序 193

5.16 最大堆的类定义和实现 194

5.16.1 程序构思 194

5.16.2 最大堆的类定义maxheap.h 195

5.16.3 最大堆的实现maxheap.cpp 195

5.16.4 最大堆类的测试maxheapm.cpp 197

5.16.5 maxheapm.cpp运行结果 198

5.17 利用最大堆相关操作进行堆排序 198

第6章 图 200

6.1 图的类定义和实现 200

6.1.1 程序构思 200

6.1.2 图的相关数据类型的定义graph.h 200

6.1.3 图的相关运算的实现graph.cpp 201

6.1.4 图的相关运算的测试graphM.cpp 206

6.1.5 graphM.cpp运行结果 207

6.2 图的类定义和实现 208

6.2.1 程序构思 208

6.2.2 图的相关数据类型的定义graphO.h 209

6.2.3 图的相关运算的实现graphO.cpp 210

6.2.4 图的相关运算的测试graphOM.cpp 215

6.2.5 graphOM.cpp运行结果 216

6.2.6 分析 217

6.3 图的类定义和实现 217

6.3.1 程序构思 217

6.3.2 图的相关数据类型的定义graphl.h 217

6.3.3 图的相关运算的实现graphl.cpp 218

6.3.4 图的相关运算的测试graphlM.cpp 224

6.3.5 graphlM.cpp运行结果 225

6.4 利用普里姆算法求出用邻接矩阵表示的图的最小生成树 226

6.4.1 程序构思 226

6.4.2 图的相关数据类型的定义graph2.h 226

6.4.3 图的运算的实现文件graph2.cpp 227

6.4.4 图的相关运算的测试graph2M.cpp 229

6.4.5 graph2M.cpp运行结果 230

6.4.6 分析 230

6.5 利用克鲁斯卡尔方法求边集数组所示图的最小生成树 230

6.5.1 程序构思 230

6.5.2 图的相关数据类型的定义graph3.h 231

6.5.3 图的运算的实现文件graph3.cpp 232

6.5.4 图的相关运算的测试graph3M.cpp 235

6.5.5 graph3M.cpp运行结果 235

6.5.6 分析 236

6.6 狄克斯特拉算法(从一个顶点到其余各顶点的最短路径) 236

6.6.1 程序构思 236

6.6.2 最短路径(狄克斯特拉算法)PshortP.h 236

6.6.3 狄克斯特拉算法测试PshortPM.cpp 237

6.6.4 PShortPM.cpp运行结果 238

6.6.5 分析 238

6.7 最短路径(从一个顶点到其余各顶点的最短路径) 238

6.7.1 程序构思 238

6.7.3 算法测试 239

6.7.2 最短路径(狄克斯特拉算法)PshortPl.cpp 239

6.7.4 PShortPl.cpp运行结果 240

6.7.5 分析 241

6.8 最短路径(所有顶点之间的最短路径) 241

6.8.1 程序构思 241

6.8.2 最短路径SShortP.cpp 241

6.8.3 算法测试 242

6.8.4 SShortP.cpp运行结果 242

6.8.5 分析 244

6.9 最短路径(所有顶点之间的最短路径) 244

6.9.1 程序构思 244

6.9.2 最短路径SShortPl.cpp 244

6.9.3 算法测试 244

6.9.4 SShortPl.cpp运行结果 245

6.10 最短路径(弗洛伊德算法、所有顶点之间的最短路径) 247

6.10.1 程序构思 247

6.10.2 最短路径(弗洛伊德算法)FloydP.h 247

6.9.5 分析 247

6.10.3 弗洛伊德算法测试FloydP.cpp 248

6.10.4 FloydP.cpp运行结果 248

6.10.5 分析 250

6.11 最短路径(弗洛伊德算法、所有顶点之间的最短路径) 250

6.11.1 程序构思 250

6.11.2 弗洛伊德算法测试FloydPl.cpp 250

6.11.3 FloydPl.cpp运行结果 251

6.12 拓扑排序 253

6.11.4 分析 253

第7章 排序 256

7.1 桶排序 256

7.2 插入排序法(类方法) 257

7.3 插入排序法(类方法) 259

7.4 插入排序法 260

7.5 希尔排序法(类方法) 261

7.6 希尔排序 263

7.7 快速排序(类方法) 265

7.8 快速排序(类方法) 266

7.9 快速排序 267

7.10 快速排序 269

7.11 通用选择排序法 270

7.12 选择排序 271

7.13 选择排序法(下沉) 272

7.14 选择排序法(类方法) 273

7.15 选择排序法(函数模板、排序不改变原数组各元素的值) 275

7.16 选择排序法(函数模板、上浮) 276

7.17 选择排序法(排序后不改变原数组各元素的值) 278

7.18 通用冒泡排序法(下沉) 279

7.19 冒泡排序法(上浮) 280

7.20 冒泡排序法(下沉) 281

7.21 通用冒泡排序法(上浮) 282

7.22 归并排序(类方法) 284

7.23 归并排序法 286

7.24 堆排序法(类方法) 287

7.25 堆排序法 289

7.26 堆排序法(迭代器) 290

7.27 基数排序法(类方法) 292

7.28 基数排序法(函数模板) 293

7.29 锦标赛排序法 294

7.30 多种排序方法 296

7.31 K路平衡归并 299

7.32 对外存文件(磁盘文件)进行选择排序的算法 301

7.33 外存文件的排序操作(二路平衡归并) 303

第8章 查找 308

8.1 二分查找法(递归调用) 308

8.2 二分查找法(非递归调用) 308

8.3.1 程序构思 309

8.3 二叉排序树的类定义与实现 309

8.3.2 二叉排序树的类定义 310

8.3.3 二叉排序树的类实现 310

8.3.4 二叉排序树类的测试 312

8.3.5 BinSortT.cpp运行结果 313

8.4 Fibonacci查找法 313

8.5 平衡二叉搜索树类定义与实现 314

8.5.1 程序构思 314

8.5.2 平衡二叉搜索树类定义与实现AVLTREE.h 315

8.5.3 平衡二叉搜索树的类模板实现 316

8.5.4 平衡二叉搜索树类测试AVLTREEM.cpp 320

8.6 顺序表的查找 321

8.5.6 分析 321

8.5.5 AVLTREEM.cpp运行结果 321

8.7 B-树的操作 324

8.7.1 程序构思 324

8.7.2 B-树的操作B Tree.cpp 324

8.7.3 B-树的相关操作的测试 328

8.7.4 B_Tree.cpp运行结果 328

8.8 B-树的(类方法)操作 328

8.8.1 程序构思 328

8.8.2 B-树的结点类型定义 329

8.8.3 B-树的类实现 329

8.8.4 B-树的类相关操作的测试 332

8.9.2 哈希表的结点类型定义 333

8.9.1 程序构思 333

8.9 哈希表 333

8.8.5 B_Treel.cpp运行结果 333

8.9.3 哈希表的操作实现 334

8.9.4 哈希表的相关操作的测试 335

8.9.5 hashtable.cpp运行结果 336

8.10 散列表类定义与实现 336

8.10.1 程序构思 336

8.10.2 散列表类定义LHashL.h 336

8.10.3 散列表类的实现LHashL.cpp 337

8.10.4 散列表类的相关操作的测试 339

8.10.5 LHashLM.cpp运行结果 340

8.10.6 分析 342

9.1.1 程序构思 343

9.1.2 散列文件的类模板定义、插入、删除和查找操作HashFM.cpp 343

9.1 散列文件的插入、删除和查找操作 343

第9章 文件 343

9.1.3 散列文件的类模板实现 344

9.1.4 散列文件的类模板实现的测试 350

9.1.5 HashFM.cpp运行结果 352

9.2 索引文件的相关操作 353

9.2.1 程序构思 353

9.2.2 索引文件的相关操作IndexF.cpp 354

9.2.3 索引文件的类模板实现 355

9.2.4 索引文件的类模板实现的测试IndexFM.cpp 360

9.2.5 IndexFM.cpp运行结果 361

参考文献 363