数据结构 算法与应用c 语言描述,数据结构算法与应用(C 语言描述).rar

目 录

译者序

前言

第一部分 预备知识

第1章 C++程序设计1

1.1 引言1

1.2 函数与参数2

1.2.1 传值参数2

1.2.2 模板函数3

1.2.3 引用参数3

1.2.4 常量引用参数4

1.2.5 返回值4

1.2.6 递归函数5

1.3 动态存储分配9

1.3.1 操作符new9

1.3.2 一维数组9

1.3.3 异常处理10

1.3.4 操作符delete10

1.3.5 二维数组10

1.4 类13

1.4.1 类Currency13

1.4.2 使用不同的描述方法18

1.4.3 操作符重载20

1.4.4 引发异常22

1.4.5 友元和保护类成员23

1.4.6 增加#ifndef, #define和#endif语句24

1.5 测试与调试24

1.5.1 什么是测试24

1.5.2 设计测试数据26

1.5.3 调试28

1.6 参考及推荐读物29

第2章 程序性能30

2.1 引言30

2.2 空间复杂性31

2.2.1

空间复杂性的组成31

2.2.2 举例35

2.3 时间复杂性37

2.3.1 时间复杂性的组成37

2.3.2 操作计数37

2.3.3 执行步数44

2.4 渐进符号(O、 健?、 o)55

2.4.1 大写O符号56

2.4.2 椒?58

2.4.3 符号59

2.4.4 小写o符号60

2.4.5 特性60

2.4.6 复杂性分析举例61

2.5 实际复杂性66

2.6 性能测量68

2.6.1 选择实例的大小69

2.6.2 设计测试数据69

2.6.3 进行实验69

2.7 参考及推荐读物74

第二部分 数据结构

第3章 数据描述75

3.1 引言75

3.2 线性表76

3.3 公式化描述77

3.3.1 基本概念77

3.3.2 异常类NoMem79

3.3.3 操作79

3.3.4 评价83

3.4 链表描述86

3.4.1 类ChainNode 和Chain86

3.4.2 操作88

3.4.3 扩充类Chain91

3.4.4 链表遍历器类92

3.4.5 循环链表93

3.4.6 与公式化描述方法的比较94

3.4.7 双向链表95

3.4.8 小结96

3.5 间接寻址99

3.5.1 基本概念99

3.5.2 操作100

3.6 模拟指针102

3.6.1 SimSpace的操作103

3.6.2 采用模拟指针的链表106

3.7 描述方法的比较110

3.8 应用111

3.8.1 箱子排序111

3.8.2 基数排序116

3.8.3 等价类117

3.8.4 凸包122

3.9 参考及推荐读物127

第4章 数组和矩阵128

4.1 数组128

4.1.1 抽象数据类型128

4.1.2 C++数组129

4.1.3 行主映射和列主映射129

4.1.4 类Array1D131

4.1.5 类Array2D133

4.2 矩阵137

4.2.1 定义和操作137

4.2.2 类Matrix138

4.3 特殊矩阵141

4.3.1 定义和应用141

4.3.2 对角矩阵143

4.3.3 三对角矩阵144

4.3.4 三角矩阵145

4.3.5 对称矩阵146

4.4 稀疏矩阵149

4.4.1 基本概念149

4.4.2 数组描述149

4.4.3 链表描述154

第5章 堆栈161

5.1 抽象数据类型161

5.2 派生类和继承162

5.3 公式化描述163

5.3.1 Stack的效率164

5.3.2 自定义Stack164

5.4 链表描述166

5.5 应用169

5.5.1 括号匹配169

5.5.2 汉诺塔170

5.5.3 火车车厢重排172

5.5.4 开关盒布线176

5.5.5 离线等价类问题178

5.5.6 迷宫老鼠180

5.6 参考及推荐读物188

第6章 队列189

6.1 抽象数据类型189

6.2 公式化描述190

6.3 链表描述194

6.4 应用197

6.4.1 火车车厢重排197

6.4.2 电路布线201

6.4.3 识别图元204

6.4.4 工厂仿真206

6.5 参考及推荐读物217

第7章 跳表和散列218

7.1 字典218

7.2 线性表描述219

7.3 跳表描述222

7.3.1 理想情况222

7.3.2 插入和删除223

7.3.3 级的分配224

7.3.4 类SkipNode224

7.3.5 类SkipList225

7.3.6 复杂性229

7.4 散列表描述229

7.4.1 理想散列229

7.4.2 线性开型寻址散列230

7.4.3 链表散列234

7.5 应用——文本压缩238

7.5.1 LZW压缩239

7.5.2 LZW压缩的实现239

7.5.3 LZW解压缩243

7.5.4 LZW解压缩的实现243

7.6 参考及推荐读物247

第8章 二叉树和其他树248

8.1 树248

8.2 二叉树251

8.3 二叉树的特性252

8.4 二叉树描述253

8.4.1 公式化描述253

8.4.2 链表描述254

8.5 二叉树常用操作256

8.6 二叉树遍历256

8.7 抽象数据类型BinaryTree259

8.8 类BinaryTree260

8.9 抽象数据类型及类的扩充263

8.9.1 输出263

8.9.2 删除264

8.9.3 计算高度264

8.9.4 统计节点数265

8.10 应用265

8.10.1 设置信号放大器265

8.10.2 在线等价类268

8.11 参考及推荐读物275

第9章 优先队列276

9.1 引言276

9.2 线性表277

9.3 堆278

9.3.1 定义278

9.3.2 最大堆的插入279

9.3.3 最大堆的删除279

9.3.4 最大堆的初始化280

9.3.5 类MaxHeap281

9.4 左高树285

9.4.1 高度与宽度优先的最大及最小

左高树285

9.4.2 最大HBLT的插入287

9.4.3 最大HBLT的删除287

9.4.4 合并两棵最大HBLT287

9.4.5 初始化最大HBLT289

9.4.6 类MaxHBLT289

9.5 应用293

9.5.1 堆排序293

9.5.2 机器调度294

9.5.3 霍夫曼编码297

9.6 参考及推荐读物302

第10章 竞?303

10.1 引言303

10.2 抽象数据类型WinnerTree306

10.3 类WinnerTree307

10.3.1 定义307

10.3.2 类定义307

10.3.3 构造函数、析构函数及Winner

函数308

10.3.4 初始化赢者树308

10.3.5 重新组织比赛310

10.4 输者树311

10.5 应用312

10.5.1 用最先匹配法求解箱子装载

问题312

10.5.2 用相邻匹配法求解箱子装载

问题316

第11章 搜索树319

11.1 二叉搜索树320

11.1.1 基本概念320

11.1.2 抽象数据类型BSTree和

IndexedBSTree321

11.1.3 类BSTree322

11.1.4 搜索322

11.1.5 插入323

11.1.6 删除324

11.1.7 类DBSTree326

11.1.8 二叉搜索树的高度327

11.2 AVL树328

11.2.1 基本概念328

11.2.2 AVL树的高度328

11.2.3 AVL树的描述329

11.2.4 AVL搜索树的搜索329

11.2.5 AVL搜索树的插入329

11.2.6 AVL搜索树的删除332

11.3 红-黑树334

11.3.1 基本概念334

11.3.2 红-黑树的描述336

11.3.3 红-黑树的搜索336

11.3.4 红-黑树的插入336

11.3.5 红-黑树的删除339

11.3.6 实现细节的考虑及复杂性分析343

11.4 B-树344

11.4.1 索引顺序访问方法344

11.4.2 m 叉搜索树345

11.4.3 m 序B-树346

11.4.4 B-树的高度347

11.4.5 B-树的搜索348

11.4.6 B-树的插入348

11.4.7 B-树的删除350

11.4.8 节点结构353

11.5 应用354

11.5.1 直方图354

11.5.2 用最优匹配法求解箱子装载

问题357

11.5.3 交叉分布359

11.6 参考及推荐读物363

第12章 图365

12.1 基本概念365

12.2 应用366

12.3 特性368

12.4 抽象数据类型Graph和Digraph370

12.5 无向图和有向图的描述371

12.5.1 邻接矩阵371

12.5.2 邻接压缩表373

12.5.3 邻接链表374

12.6 网络描述375

12.7 类定义376

12.7.1 不同的类376

12.7.2 邻接矩阵类377

12.7.3 扩充Chain类380

12.7.4 类LinkedBase381

12.7.5 链接类382

12.8 图的遍历386

12.8.1 基本概念386

12.8.2 邻接矩阵的遍历函数387

12.8.3 邻接链表的遍历函数388

12.9 语言特性389

12.9.1 虚函数和多态性389

12.9.2 纯虚函数和抽象类391

12.9.3 虚基类391

12.9.4 抽象类和抽象数据类型393

12.10 图的搜索算法394

12.10.1 宽度优先搜索394

12.10.2 类Network395

12.10.3 BFS的实现395

12.10.4 BFS的复杂性分析396

12.10.5 深度优先搜索397

12.11 应用399

12.11.1 寻找路径399

12.11.2 连通图及其构件400

12.11.3 生成树402

第三部分 算法设计方法

第13章 贪婪算法405

13.1 最优化问题405

13.2 算法思想406

13.3 应用409

13.3.1 货箱装船409

13.3.2 0/1背包问题 410

13.3.3 拓扑排序412

13.3.4 二分覆盖415

13.3.5 单源最短路径421

13.3.6 最小耗费生成树424

13.4 参考及推荐读物433

第14章 分而治之算法434

14.1 算法思想434

14.2 应用440

14.2.1 残缺棋盘440

14.2.2 归并排序443

14.2.3 快速排序447

14.2.4 选择452

14.2.5 距离最近的点对454

14.3 解递归方程462

14.4 复杂性的下限463

14.4.1 最小最大问题的下限464

14.4.2 排序算法的下限465

第15章 动态规划467

15.1 算法思想467

15.2 应用469

15.2.1 0/1背包问题469

15.2.2 图像压缩471

15.2.3 矩阵乘法链476

15.2.4 最短路径480

15.2.5 网络的无交叉子集483

15.2.6 元件折叠486

15.3 参考及推荐读物491

第16章 回溯492

16.1 算法思想492

16.2 应用496

16.2.1 货箱装船496

16.2.2 0/1背包问题503

16.2.3 最大完备子图506

16.2.4 旅行商问题508

16.2.5 电路板排列510

第17章 分枝定界516

17.1 算法思想516

17.2 应用519

17.2.1 货箱装船519

17.2.2 0/1背包问题526

17.2.3 最大完备子图528

17.2.4 旅行商问题529

17.2.5 电路板排列532

...展开收缩

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据结构算法应用-C++语言描述 目 录 译者序 前言 第一部分 预备知识 第1章 C++程序设计 1 1.1 引言 1 1.2 函数与参数 2 1.2.1 传值参数 2 1.2.2 模板函数 3 1.2.3 引用参数 3 1.2.4 常量引用参数 4 1.2.5 返回值 4 1.2.6 递归函数 5 1.3 动态存储分配 9 1.3.1 操作符new 9 1.3.2 一维数组 9 1.3.3 异常处理 10 1.3.4 操作符delete 10 1.3.5 二维数组 10 1.4 类 13 1.4.1 类Currency 13 1.4.2 使用不同的描述方法 18 1.4.3 操作符重载 20 1.4.4 引发异常 22 1.4.5 友元和保护类成员 23 1.4.6 增加#ifndef, #define和#endif语句 24 1.5 测试与调试 24 1.5.1 什么是测试 24 1.5.2 设计测试数据 26 1.5.3 调试 28 1.6 参考及推荐读物 29 第2章 程序性能 30 2.1 引言 30 2.2 空间复杂性 31 2.2.1 空间复杂性的组成 31 2.2.2 举例 35 2.3 时间复杂性 37 2.3.1 时间复杂性的组成 37 2.3.2 操作计数 37 2.3.3 执行步数 44 2.4 渐进符号(O、 健?、 o) 55 2.4.1 大写O符号 56 2.4.2 椒?58 2.4.3 符号 59 2.4.4 小写o符号 60 2.4.5 特性 60 2.4.6 复杂性分析举例 61 2.5 实际复杂性 66 2.6 性能测量 68 2.6.1 选择实例的大小 69 2.6.2 设计测试数据 69 2.6.3 进行实验 69 2.7 参考及推荐读物 74 第二部分 数据结构 第3章 数据描述 75 3.1 引言 75 3.2 线性表 76 3.3 公式化描述 77 3.3.1 基本概念 77 3.3.2 异常类NoMem 79 3.3.3 操作 79 3.3.4 评价 83 3.4 链表描述 86 3.4.1 类ChainNode 和Chain 86 3.4.2 操作 88 3.4.3 扩充类Chain 91 3.4.4 链表遍历器类 92 3.4.5 循环链表 93 3.4.6 与公式化描述方法的比较 94 3.4.7 双向链表 95 3.4.8 小结 96 3.5 间接寻址 99 3.5.1 基本概念 99 3.5.2 操作 100 3.6 模拟指针 102 3.6.1 SimSpace的操作 103 3.6.2 采用模拟指针的链表 106 3.7 描述方法的比较 110 3.8 应用 111 3.8.1 箱子排序 111 3.8.2 基数排序 116 3.8.3 等价类 117 3.8.4 凸包 122 3.9 参考及推荐读物 127 第4章 数组和矩阵 128 4.1 数组 128 4.1.1 抽象数据类型 128 4.1.2 C++数组 129 4.1.3 行主映射和列主映射 129 4.1.4 类Array1D 131 4.1.5 类Array2D 133 4.2 矩阵 137 4.2.1 定义和操作 137 4.2.2 类Matrix 138 4.3 特殊矩阵 141 4.3.1 定义和应用 141 4.3.2 对角矩阵 143 4.3.3 三对角矩阵 144 4.3.4 三角矩阵 145 4.3.5 对称矩阵 146 4.4 稀疏矩阵 149 4.4.1 基本概念 149 4.4.2 数组描述 149 4.4.3 链表描述 154 第5章 堆栈 161 5.1 抽象数据类型 161 5.2 派生类和继承 162 5.3 公式化描述 163 5.3.1 Stack的效率 164 5.3.2 自定义Stack 164 5.4 链表描述 166 5.5 应用 169 5.5.1 括号匹配 169 5.5.2 汉诺塔 170 5.5.3 火车车厢重排 172 5.5.4 开关盒布线 176 5.5.5 离线等价类问题 178 5.5.6 迷宫老鼠 180 5.6 参考及推荐读物 188 第6章 队列 189 6.1 抽象数据类型 189 6.2 公式化描述 190 6.3 链表描述 194 6.4 应用 197 6.4.1 火车车厢重排 197 6.4.2 电路布线 201 6.4.3 识别图元 204 6.4.4 工厂仿真 206 6.5 参考及推荐读物 217 第7章 跳表和散列 218 7.1 字典 218 7.2 线性表描述 219 7.3 跳表描述 222 7.3.1 理想情况 222 7.3.2 插入和删除 223 7.3.3 级的分配 224 7.3.4 类SkipNode 224 7.3.5 类SkipList 225 7.3.6 复杂性 229 7.4 散列表描述 229 7.4.1 理想散列 229 7.4.2 线性开型寻址散列 230 7.4.3 链表散列 234 7.5 应用——文本压缩 238 7.5.1 LZW压缩 239 7.5.2 LZW压缩的实现 239 7.5.3 LZW解压缩 243 7.5.4 LZW解压缩的实现 243 7.6 参考及推荐读物 247 第8章 二叉树和其他树 248 8.1 树 248 8.2 二叉树 251 8.3 二叉树的特性 252 8.4 二叉树描述 253 8.4.1 公式化描述 253 8.4.2 链表描述 254 8.5 二叉树常用操作 256 8.6 二叉树遍历 256 8.7 抽象数据类型BinaryTree 259 8.8 类BinaryTree 260 8.9 抽象数据类型及类的扩充 263 8.9.1 输出 263 8.9.2 删除 264 8.9.3 计算高度 264 8.9.4 统计节点数 265 8.10 应用 265 8.10.1 设置信号放大器 265 8.10.2 在线等价类 268 8.11 参考及推荐读物 275 第9章 优先队列 276 9.1 引言 276 9.2 线性表 277 9.3 堆 278 9.3.1 定义 278 9.3.2 最大堆的插入 279 9.3.3 最大堆的删除 279 9.3.4 最大堆的初始化 280 9.3.5 类MaxHeap 281 9.4 左高树 285 9.4.1 高度与宽度优先的最大及最小 左高树 285 9.4.2 最大HBLT的插入 287 9.4.3 最大HBLT的删除 287 9.4.4 合并两棵最大HBLT 287 9.4.5 初始化最大HBLT 289 9.4.6 类MaxHBLT 289 9.5 应用 293 9.5.1 堆排序 293 9.5.2 机器调度 294 9.5.3 霍夫曼编码 297 9.6 参考及推荐读物 302 第10章 竞?303 10.1 引言 303 10.2 抽象数据类型WinnerTree 306 10.3 类WinnerTree 307 10.3.1 定义 307 10.3.2 类定义 307 10.3.3 构造函数、析构函数及Winner 函数 308 10.3.4 初始化赢者树 308 10.3.5 重新组织比赛 310 10.4 输者树 311 10.5 应用 312 10.5.1 用最先匹配法求解箱子装载 问题 312 10.5.2 用相邻匹配法求解箱子装载 问题 316 第11章 搜索树 319 11.1 二叉搜索树 320 11.1.1 基本概念 320 11.1.2 抽象数据类型BSTree和 IndexedBSTree 321 11.1.3 类BSTree 322 11.1.4 搜索 322 11.1.5 插入 323 11.1.6 删除 324 11.1.7 类DBSTree 326 11.1.8 二叉搜索树的高度 327 11.2 AVL树 328 11.2.1 基本概念 328 11.2.2 AVL树的高度 328 11.2.3 AVL树的描述 329 11.2.4 AVL搜索树的搜索 329 11.2.5 AVL搜索树的插入 329 11.2.6 AVL搜索树的删除 332 11.3 红-黑树 334 11.3.1 基本概念 334 11.3.2 红-黑树的描述 336 11.3.3 红-黑树的搜索 336 11.3.4 红-黑树的插入 336 11.3.5 红-黑树的删除 339 11.3.6 实现细节的考虑及复杂性分析 343 11.4 B-树 344 11.4.1 索引顺序访问方法 344 11.4.2 m 叉搜索树 345 11.4.3 m 序B-树 346 11.4.4 B-树的高度 347 11.4.5 B-树的搜索 348 11.4.6 B-树的插入 348 11.4.7 B-树的删除 350 11.4.8 节点结构 353 11.5 应用 354 11.5.1 直方图 354 11.5.2 用最优匹配法求解箱子装载 问题 357 11.5.3 交叉分布 359 11.6 参考及推荐读物 363 第12章 图 365 12.1 基本概念 365 12.2 应用 366 12.3 特性 368 12.4 抽象数据类型Graph和Digraph 370 12.5 无向图和有向图的描述 371 12.5.1 邻接矩阵 371 12.5.2 邻接压缩表 373 12.5.3 邻接链表 374 12.6 网络描述 375 12.7 类定义 376 12.7.1 不同的类 376 12.7.2 邻接矩阵类 377 12.7.3 扩充Chain类 380 12.7.4 类LinkedBase 381 12.7.5 链接类 382 12.8 图的遍历 386 12.8.1 基本概念 386 12.8.2 邻接矩阵的遍历函数 387 12.8.3 邻接链表的遍历函数 388 12.9 语言特性 389 12.9.1 虚函数和多态性 389 12.9.2 纯虚函数和抽象类 391 12.9.3 虚基类 391 12.9.4 抽象类和抽象数据类型 393 12.10 图的搜索算法 394 12.10.1 宽度优先搜索 394 12.10.2 类Network 395 12.10.3 BFS的实现 395 12.10.4 BFS的复杂性分析 396 12.10.5 深度优先搜索 397 12.11 应用 399 12.11.1 寻找路径 399 12.11.2 连通图及其构件 400 12.11.3 生成树 402 第三部分 算法设计方法 第13章 贪婪算法 405 13.1 最优化问题 405 13.2 算法思想 406 13.3 应用 409 13.3.1 货箱装船 409 13.3.2 0/1背包问题 410 13.3.3 拓扑排序 412 13.3.4 二分覆盖 415 13.3.5 单源最短路径 421 13.3.6 最小耗费生成树 424 13.4 参考及推荐读物 433 第14章 分而治之算法 434 14.1 算法思想 434 14.2 应用 440 14.2.1 残缺棋盘 440 14.2.2 归并排序 443 14.2.3 快速排序 447 14.2.4 选择 452 14.2.5 距离最近的点对 454 14.3 解递归方程 462 14.4 复杂性的下限 463 14.4.1 最小最大问题的下限 464 14.4.2 排序算法的下限 465 第15章 动态规划 467 15.1 算法思想 467 15.2 应用 469 15.2.1 0/1背包问题 469 15.2.2 图像压缩 471 15.2.3 矩阵乘法链 476 15.2.4 最短路径 480 15.2.5 网络的无交叉子集 483 15.2.6 元件折叠 486 15.3 参考及推荐读物 491 第16章 回溯 492 16.1 算法思想 492 16.2 应用 496 16.2.1 货箱装船 496 16.2.2 0/1背包问题 503 16.2.3 最大完备子图 506 16.2.4 旅行商问题 508 16.2.5 电路板排列 510 第17章 分枝定界 516 17.1 算法思想 516 17.2 应用 519 17.2.1 货箱装船 519 17.2.2 0/1背包问题 526 17.2.3 最大完备子图 528 17.2.4 旅行商问题 529 17.2.5 电路板排列 532
游洪跃是四川大学计算机学院的一位教师,他教授数据结构算法分析课程。他布置的作业习题包括数组和广义表以及图的编程题目。据引用和中提到的内容,学生表示自己认真完成了每一个要点,程序跑通且符合要求,并且得到了很好的分数。至于引用中提到的智能算法Galaxy Gravity Optimization Algorithm (GGO)星系引力优化算法,目前我没有找到与游洪跃老师有关的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [四川大学计算机学院游洪跃老师数据结构算法分析课程的平时作业习题4-数组和广义表.rar](https://download.csdn.net/download/qq_45469609/21176357)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [四川大学计算机学院游洪跃老师数据结构算法分析课程的平时作业习题6-图.rar](https://download.csdn.net/download/qq_45469609/21176513)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [智能算法:Galaxy Gravity Optimization Algorithm (GGO)星系引力优化算法Matlab](https://download.csdn.net/download/weixin_39168167/88275205)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值