书籍 算法与数据结构的封面

算法与数据结构PDF电子书下载

陈媛编著

购买点数

12

出版社

北京:清华大学出版社

出版时间

2019

ISBN

标注页数

317 页

PDF页数

330 页

图书目录

第1章 绪论 1

1.1数据结构的基本概念与学习方法 1

1.1.1数据结构的研究对象 1

1.1.2数据结构的基本概念和基本术语 2

1.2算法与数据结构 8

1.2.1算法的概念 8

1.2.2描述算法的方法 9

1.2.3算法分析 9

1.3学习算法与数据结构的意义和方法 13

1.4 C语言的数据类型及其算法描述 14

1.4.1 C语言的基本数据类型概述 14

1.4.2 C语言的数组和结构体数据类型 14

1.4.3 C语言的指针类型概述 18

1.4.4 C语言的函数 23

1.4.5用C语言验证算法的方法 26

1.5从C语言到C++语言 28

1.5.1 C++语言的类和抽象数据类型 28

1.5.2 C++语言验证算法的方法 31

1.5.3 C++语言与C语言程序的区别 32

1.5.4 C++语言的重要特性 32

习题1 38

上机练习1 39

第2章 线性表 40

2.1线性表的逻辑结构 40

2.1.1线性表的定义 40

2.1.2线性表的运算 41

2.2线性表的顺序存储结构——顺序表 42

2.2.1顺序表 42

2.2.2顺序存储结构的优缺点 43

2.2.3顺序表上的基本运算 44

2.3线性表的链式存储结构——链表 47

2.3.1单链表 47

2.3.2循环链表和双向链表 55

2.4线性表的应用示例 59

2.5 C++中的线性表 63

2.5.1 C++中线性表抽象数据类型 63

2.5.2 C++中线性表的顺序存储 64

2.5.3 C++中线性表的链式存储 67

习题2 70

上机练习2 71

第3章 栈和队列 73

3.1栈 73

3.1.1栈的基本概念 73

3.1.2栈的顺序存储结构 75

3.1.3栈的链式存储结构 78

3.2栈的应用实例 80

3.2.1表达式求值 80

3.2.2栈与函数调用 82

3.2.3栈在回溯法中的应用 83

3.3队列 84

3.3.1队列的基本概念 84

3.3.2队列的顺序存储结构 85

3.3.3队列的链式存储结构 89

3.4队列的应用实例 92

3.4.1舞伴问题 92

3.4.2打印队列的模拟管理 94

3.5递归 96

3.5.1递归的定义及递归模型 96

3.5.2递归的实现 99

3.5.3递归设计 100

3.5.4递归到非递归的转换 101

3.6 C++中的栈和队列 102

3.6.1 C++中的栈 102

3.6.2 C++中的队列 104

习题3 106

上机练习3 106

第4章 数组和字符串 109

4.1数组 109

4.1.1数组的定义与操作 109

4.1.2数组的顺序存储结构 110

4.1.3矩阵的压缩存储方法 111

4.2字符串 119

4.2.1字符串的定义与操作 119

4.2.2字符串的存储结构 121

4.2.3字符串基本操作的实现 125

4.2.4字符串的应用举例 130

4.3 C++中的数组和字符串 131

4.3.1 C++中的数组 131

4.3.2 C++中的字符串 133

习题4 133

上机练习4 134

第5章 树 135

5.1树的概念与操作 135

5.1.1树的概念 135

5.1.2树的基本操作 137

5.2二叉树 138

5.2.1二叉树的概念 138

5.2.2二叉树的性质 140

5.2.3二叉树的存储结构及其实现 142

5.3二叉树的遍历 144

5.3.1递归的遍历算法 144

5.3.2二叉树遍历操作应用举例 147

5.4线索二叉树 149

5.4.1线索二叉树的定义 149

5.4.2线索二叉树的常用运算 151

5.5一般树的表示和遍历 155

5.5.1一般树的表示 155

5.5.2二叉树与树、森林之间的转换 157

5.5.3一般树的遍历 159

5.6哈夫曼树及其应用 160

5.6.1哈夫曼树 160

5.6.2哈夫曼树的应用 162

5.7 C++中的树 167

5.7.1 C++中的二叉树结点类 167

5.7.2 C++中的二叉树类 167

5.7.3 C++中二叉树的非递归遍历 169

习题5 170

上机练习5 173

第6章 图 175

6.1图的概念与操作 175

6.1.1图的定义 175

6.1.2图的基本术语 176

6.2图的存储结构 179

6.2.1邻接矩阵 179

6.2.2邻接表 180

6.2.3十字链表 182

6.2.4边集数组 184

6.3图的遍历 185

6.3.1深度优先搜索 185

6.3.2广度优先搜索 188

6.4图的连通性 190

6.4.1无向图的连通分量 190

6.4.2生成树和最小代价生成树 190

6.5有向无环图及应用 196

6.5.1拓扑排序 196

6.5.2关键路径 201

6.6最短路径及应用 204

6.6.1单源最短路径 205

6.6.2每对顶点之间的最短路径 208

6.7 C++中的图 210

6.7.1 C++中的图类 210

6.7.2图的邻接表的C++程序 211

6.7.3图的遍历的C++程序 213

6.7.4图的最小生成树的C++程序 213

习题6 214

上机练习6 216

第7章 查找 217

7.1基本概念与术语 217

7.2静态查找表 219

7.2.1静态查找表结构 219

7.2.2顺序查找 220

7.2.3有序表的折半查找 221

7.2.4有序表的插值查找和斐波那契查找 223

7.2.5分块查找 224

7.3动态查找表 225

7.3.1二叉排序树 225

7.3.2平衡二叉树 230

7.3.3 B-树和B+树 235

7.4哈希表查找 241

7.4.1哈希表与哈希方法 241

7.4.2常用的哈希方法 241

7.4.3处理冲突的方法 243

7.4.4哈希表的查找分析 245

7.5 C++中的查找 246

7.5.1静态查找的C++程序 246

7.5.2动态查找的C++程序 247

习题7 248

上机练习7 249

第8章 排序 250

8.1基本概念 250

8.2插入排序 251

8.2.1直接插入排序 251

8.2.2希尔排序 253

8.3交换排序 254

8.3.1冒泡排序 254

8.3.2快速排序 256

8.4选择排序 258

8.4.1简单选择排序 259

8.4.2堆排序 260

8.5归并排序 264

8.6基数排序 266

8.7外部排序简介 270

8.7.1外存信息的存取 270

8.7.2外部排序的基本方法 271

8.8 C++中的排序 272

习题8 273

上机练习8 274

第9章 常用算法设计技术 275

9.1蛮力算法 275

9.1.1蛮力算法思想 275

9.1.2蛮力算法应用实例——最近对问题 276

9.2分治算法 276

9.2.1分治算法思想 276

9.2.2分治算法设计 277

9.2.3分治算法设计应用实例——棋盘覆盖问题 278

9.3动态规划算法 280

9.3.1动态规划算法思想及设计 280

9.3.2动态规划算法应用实例——0/1背包问题 281

9.4贪心算法 284

9.4.1贪心算法技术思想 284

9.4.2贪心算法设计 284

9.4.3贪心算法应用实例——背包问题 285

9.5回溯算法 287

9.5.1回溯算法有关概念 287

9.5.2回溯算法思想 288

9.5.3回溯算法设计 289

9.5.4回溯算法应用实例——装载问题 291

9.6分支限界算法 292

9.6.1分支限界算法思想 292

9.6.2分支限界算法设计 295

9.6.3分支限界算法应用实例——任务分配问题 296

习题9 298

上机练习9 299

第10章 标准模板库 300

10.1 STL简介 300

10.1.1容器 300

10.1.2迭代器 304

10.1.3算法 307

10.2 STL应用实例 309

10.2.1双向链表操作的STL实现 309

10.2.2 STL测试程序 311

习题10 315

上机练习10 315

参考文献 316

查看更多关于的内容

本类热门
在线购买PDF电子书
下载此书RAR压缩包