当前位置:首页 > 工业技术
数据结构基础  C语言版
数据结构基础  C语言版

数据结构基础 C语言版PDF电子书下载

工业技术

  • 电子书积分:15 积分如何计算积分?
  • 作 者:Ellis Horowitz,Startaj Sahni,Susan Anderson-Freed著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2009
  • ISBN:9787302186960
  • 页数:470 页
图书介绍:本书是最经典数据结构教材的最新版本,国内外大多数的同类教材都是以本书为蓝本编写而来的。本书用C作为描述语言,全面而生动地介绍了数据结构的有关知识,如数组、栈、队列、链表、树和图,以及构成所有软件基础的排序散列技术。
《数据结构基础 C语言版》目录

第1章 基本概念 1

1.1概观:系统生命周期 1

1.2指针和动态存储分配 3

1.2.1指针 3

1.2.2动态存储分配 4

1.2.3指针隐患 6

1.3算法形式规范 6

1.3.1综论 6

1.3.2递归算法 11

1.4数据抽象 14

1.5性能分析 17

1.5.1空间复杂度 18

1.5.2时间复杂度 20

1.5.3渐近记号(O,Ω,Θ) 27

1.5.4实际复杂度 33

1.6性能度量 35

1.6.1定时 35

1.6.2生成测试数据 39

1.7参考文献和选读材料 40

第2章 数组和结构 41

2.1数组 41

2.1.1数组的抽象数据类型 41

2.1.2C语言的数组 41

2.2数组的动态存储分配 44

2.2.1一维数组 44

2.2.2二维数组 44

2.3结构体和联合体 47

2.3.1结构体 47

2.3.2联合体 49

2.3.3结构的内部实现 50

2.3.4自引用结构 50

2.4多项式 51

2.4.1多项式的抽象数据类型 51

2.4.2多项式的表示 52

2.4.3多项式加法 55

2.5稀疏矩阵 58

2.5.1稀疏矩阵的抽象数据类型 58

2.5.2稀疏矩阵的表示 58

2.5.3矩阵转置 59

2.5.4矩阵相乘 63

2.6多维数组的表示 67

2.7字符串 68

2.7.1字符串的抽象数据类型 68

2.7.2C语言的字符串 68

2.7.3模式匹配 71

2.8参考文献和选读材料 77

2.9补充习题 78

第3章 栈与队列 83

3.1栈 83

3.2动态栈 87

3.3队列 88

3.4动态循环队列 92

3.5迷宫问题 95

3.6表达式求值 98

3.6.1表达式 98

3.6.2后缀表达式求值 100

3.6.3中缀表达式转换成后缀表达式 103

3.7多重栈与多重队列 108

3.8补充习题 111

第4章 链表 113

4.1单向链表 113

4.2用C语言表示单向链表 115

4.3链式栈与链式队列 121

4.4多项式 124

4.4.1多项式表示 124

4.4.2多项式加法 125

4.4.3销毁多项式 128

4.4.4循环链表与多项式 129

4.4.5小结 130

4.5其它链表操作 133

4.5.1单向链表操作 133

4.5.2循环链表操作 134

4.6等价类 135

4.7稀疏矩阵 139

4.7.1稀疏矩阵表示 139

4.7.2输入稀疏矩阵 142

4.7.3输出稀疏矩阵 144

4.7.4销毁稀疏矩阵 144

4.8双向链表 146

第5章 树 149

5.1引论 149

5.1.1术语 149

5.1.2树的表示 151

5.2二叉树 154

5.2.1二叉树的抽象数据类型 154

5.2.2二叉树的性质 155

5.2.3二叉树的表示 157

5.3遍历二叉树 159

5.3.1中序遍历 160

5.3.2先序遍历 161

5.3.3后序遍历 161

5.3.4非递归(循环)中序遍历 162

5.3.5层序遍历 163

5.3.6不设栈遍历二叉树 163

5.4其它二叉树操作 164

5.4.1复制二叉树 164

5.4.2判断两个二叉树全等 164

5.4.3可满足性问题 165

5.5线索二叉树 168

5.5.1线索 168

5.5.2中序遍历线索二叉树 169

5.5.3线索二叉树插入结点 170

5.6堆 172

5.6.1优先级队列 172

5.6.2大根堆定义 174

5.6.3大根堆插入操作 174

5.6.4大根堆删除操作 176

5.7二叉查找树 178

5.7.1定义 178

5.7.2二叉查找树的查找 179

5.7.3二叉查找树的插入 180

5.7.4二叉查找树的删除 181

5.7.5二叉查找树的合并与分裂 182

5.7.6二叉查找树的高度 183

5.8选拔树 185

5.8.1引子 185

5.8.2优胜树 186

5.8.3淘汰树 187

5.9森林 188

5.9.1森林转换为二叉树 189

5.9.2遍历森林 189

5.10不相交集合的表示 190

5.10.1引子 190

5.10.2合并与查找操作 191

5.10.3划分等价类 197

5.11二叉树的计数 199

5.11.1不同态二叉树 199

5.11.2栈置换 200

5.11.3矩阵乘法 201

5.11.4不同二叉树的数目 203

5.12参考文献和选读材料 204

第6章 图 205

6.1图的抽象数据类型 205

6.1.1引子 205

6.1.2图的定义和术语 206

6.1.3图的表示 210

6.2图的基本操作 216

6.2.1深度优先搜索 216

6.2.2广度优先搜索 217

6.2.3连通分量 218

6.2.4生成树 219

6.2.5重连通分量 220

6.3最小代价生成树 225

6.3.1Kruskal算法 225

6.3.2Prim算法 228

6.3.3Sollin算法 229

6.4最短路径和迁移闭包 230

6.4.1单源点至所有其它节点:边权值非负 231

6.4.2单源点至所有其它节点:边权值正负无限制 233

6.4.3所有节点两两之间的最短路径 237

6.4.4迁移闭包 238

6.5活动网络 242

6.5.1活动节点(AOV)网络 242

6.5.2活动边(AOE)网络 247

6.6参考文献和选读材料 253

6.7补充习题 254

第7章 排序 256

7.1动机 256

7.2插入排序 259

7.3快速排序 261

7.4排序最快有多快 264

7.5归并排序 265

7.5.1归并 265

7.5.2非递归归并排序 266

7.5.3递归归并排序 267

7.6堆排序 270

7.7多关键字排序 273

7.8链表排序和索引表排序 277

7.9内部排序小结 284

7.10外部排序 289

7.10.1引子 289

7.10.2k路归并 291

7.10.3缓存与并行操作 292

7.10.4生成多路数据 298

7.10.5最优多路归并 300

7.11参考文献和选读材料 303

第8章 Hash法 304

8.1引言 304

8.2静态Hash法 304

8.2.1Hash表 304

8.2.2Hash函数 305

8.2.3溢出处理 307

8.2.4处理溢出方法的理论估计 312

8.3动态Hash法 315

8.3.1动态Hash法的动机 315

8.3.2设目录的动态Hash法 316

8.3.3不设目录的动态Hash法 318

8.4Bloom滤波器 320

8.4.1差异文件及其应用 320

8.4.2设计Bloom滤波器 321

8.5参考文献和选读材料 323

第9章 优先级队列 324

9.1单端优先级队列与双端优先级队列 324

9.2左倾树 325

9.2.1高度左倾树 325

9.2.2权值左倾树 330

9.3二项式堆 332

9.3.1代价分摊 332

9.3.2二项式堆的定义 333

9.3.3二项式堆的插入 333

9.3.4融合两个二项式堆 334

9.3.5删除最小元 334

9.3.6分析 336

9.4Fibonacci堆 338

9.4.1定义 338

9.4.2F-堆的删除 338

9.4.3减小关键字 339

9.4.4上行切除 339

9.4.5分析 340

9.4.6F-堆与最短路径问题 342

9.5配偶堆 344

9.5.1定义 344

9.5.2融合与插入 344

9.5.3减小关键字值 345

9.5.4删除最小元 346

9.5.5删除任意元 348

9.5.6实现细节 349

9.5.7复杂度分析 349

9.6对称最小-最大堆 350

9.6.1定义与性质 350

9.6.2SMMH的表示 351

9.6.3SMMH的插入 351

9.6.4SMMH的删除 353

9.7区间堆 358

9.7.1定义和性质 358

9.7.2区间堆的插入 359

9.7.3删除最小元 360

9.7.4区间堆的初始化 361

9.7.5区间堆操作的复杂度 361

9.7.6区间外查找 361

9.8参考文献和选读材料 363

第10章 高效二叉查找树 366

10.1最优二叉查找树 366

10.2AVL树 373

10.3红-黑树 384

10.3.1定义 384

10.3.2红-黑树的表示 386

10.3.3红-黑树的查找 386

10.3.4红-黑树的插入 386

10.3.5红-黑树的删除 389

10.3.6红-黑树的合并 389

10.3.7红-黑树的分裂 391

10.4Splay树 393

10.4.1自底向上Splay树 394

10.4.2自顶向下Splay树 398

10.5参考文献和选读材料 403

第11章 多路查找树 405

11.1m-路查找树 405

11.1.1定义和性质 405

11.1.2m-路查找树的查找 406

11.2B-树 407

11.2.1定义和性质 407

11.2.2B-树中数据元素的个数 408

11.2.3B-树的插入 409

11.2.4B-树的删除 412

11.3B+-树 419

11.3.1定义 419

11.3.2B+-树的查找 420

11.3.3B+-树的插入 420

11.3.4B+-树的删除 422

11.4参考文献和选读材料 426

第12章 数字查找结构 427

12.1数字查找树 427

12.1.1定义 427

12.1.2查找、插入、删除 427

12.2二路Trie树与Patricia树 428

12.2.1二路Trie树 428

12.2.2压缩二路Trie树 429

12.2.3Patricia树 429

12.3多路Trie树 434

12.3.1定义 434

12.3.2Trie树的查找 436

12.3.3取样策略 437

12.3.4Trie树的插入 439

12.3.5Trie树的删除 439

12.3.6变长关键字 440

12.3.7Trie树的高度 440

12.3.8空间需求与其它结点结构 440

12.3.9查找前缀及其应用 443

12.3.10压缩Trie树 444

12.3.11设skip域的压缩Trie树 446

12.3.12设边标记的压缩Trie树 446

12.3.13压缩Trie树的空间需求 449

12.4后缀树 450

12.4.1你见过基因串吗 450

12.4.2后缀树数据结构 450

12.4.3查!查!查子串!(后缀树的查找) 453

12.4.4后缀树的妙用 454

12.5Trie树与互连网的包转发 455

12.5.1IP路由 455

12.5.21-bit Trie树 456

12.5.3固定步长Trie树 457

12.5.4不定步长Trie树 459

12.6参考文献和选读材料 461

索引 463

相关图书
作者其它书籍
返回顶部