《数据结构 C语言版》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:夏燕,张兴科主编
  • 出 版 社:北京市:北京大学出版社
  • 出版年份:2007
  • ISBN:7301124090
  • 页数:314 页
图书介绍:本书系统地介绍了较为常用的数据结构,主要包括线性表、栈、队列,串、数组与稀疏矩阵、树、图、查找和排序,并按照高职高专计算机专业本课程大纲要求,对每种数据结构算法实现进行阐述,并对各种算法的时间和空间性能作了简要分析。本书内容详实,通俗易懂,理论的讲述够用为度,注重实践,每个章节都配有本章要求重点掌握、在C环境下调试通过的上机实训题,还配有大量标准化习题和上机操作题,上机操作题还配有参考操作步骤,使读者对每章的学习从理论到实践都能得到进一步巩固。本书可作为高职高专院校、技校、职高及社会办学相关课程的教材,也非常适合计算机相关专业初学者学习使用,特别是要参加专升本考试的读者,是很好的学习参考书。

第1章 概论 1

1.1 数据结构的概念 1

1.1.1 什么是数据结构 1

1.1.2 基本术语 3

1.2 数据类型 6

1.3 算法 7

1.3.1 算法的描述 7

1.3.2 算法性能分析 9

1.4 本章小结 12

1.5 上机实训 12

1.5.1 实训目的 12

1.5.2 实训例题 12

1.6 习题与上机操作 17

第2章 线性表 19

2.1 线性表的逻辑结构 19

2.1.1 线性表的类型定义 19

2.1.2 线性表的基本操作 20

2.2 线性表的顺序存储 21

2.2.1 顺序表 21

2.2.2 顺序表的基本运算 23

2.2.3 顺序表的应用 28

2.3 线性表的链式存储 30

2.3.1 线性链表 30

2.3.2 动态内存分配 32

2.3.3 线性链表的基本运算 33

2.3.4 循环链表及运算 37

2.3.5 双向链表及运算 39

2.4 顺序表与链表的比较及应用举例 42

2.4.1 顺序表与链表的比较 42

2.4.2 线性表应用举例 43

2.5 本章小结 48

2.6 上机实训 49

2.6.1 实训目的 49

2.6.2 实训例题 49

2.7 习题与上机操作 61

第3章 栈 64

3.1 栈的定义和基本运算 64

3.1.1 栈的定义 64

3.1.2 栈的基本运算 65

3.1.3 栈的顺序存储结构 65

3.1.4 栈的链式存储结构 68

3.2 栈的应用举例 71

3.2.1 数制的转换 71

3.2.2 表达式求值 72

3.2.3 子程序调用问题 74

3.2.4 迷宫问题 77

3.3 本章小结 81

3.4 上机实训 81

3.4.1 实训目的 81

3.4.2 实训例题 81

3.5 习题与上机操作 92

第4章 队列 94

4.1 队列的定义和基本运算 94

4.1.1 队列的定义 94

4.1.2 队列的基本运算 95

4.1.3 队列的顺序存储结构 95

4.1.4 队列的链式存储结构 100

4.2 队列的应用 103

4.2.1 利用队列打印杨辉三角形 103

4.2.2 求迷宫的最短路径 105

4.3 本章小结 107

4.4 上机实训 107

4.4.1 实训目的 107

4.4.2 实训例题 107

4.5 习题与上机操作 116

第5章 串 118

5.1 串的基本概念和存储结构 118

5.1.1 串的基本概念 118

5.1.2 串的静态存储结构 119

5.1.3 串的动态存储结构 120

5.2 串的运算 122

5.2.1 串的基本运算 122

5.2.2 实现串的基本运算的算法 123

5.3 正文模式匹配 125

5.3.1 模式匹配 125

5.3.2 简单模式匹配算法 125

5.4 串操作应用举例 127

5.5 本章小结 128

5.6 上机实训 128

5.6.1 实训目的 128

5.6.2 实训例题 129

5.7 习题与上机操作 133

第6章 数组 135

6.1 数组的基本概念 135

6.1.1 数组的定义及逻辑结构 135

6.1.2 数组的顺序存储结构 136

6.2 矩阵的压缩存储 138

6.2.1 对称矩阵的压缩存储 138

6.2.2 三角矩阵的压缩存储 139

6.3 稀疏矩阵 139

6.3.1 稀疏矩阵的概念 139

6.3.2 稀疏矩阵的转置 141

6.4 本章小结 142

6.5 上机实训 142

6.5.1 实训目的 142

6.5.2 实训例题 142

6.6 习题与上机操作 148

第7章 树和二叉树 151

7.1 树的定义和基本操作 151

7.1.1 树的定义 151

7.1.2 树的常用术语 152

7.1.3 树的表示方法 153

7.2 二叉树 154

7.2.1 二叉树的定义 154

7.2.2 二叉树的性质 154

7.2.3 二叉树的存储结构 156

7.2.4 二叉树的遍历 161

7.2.5 二叉树遍历的应用 165

7.3 线索二叉树 169

7.3.1 线索二叉树的定义及结构 169

7.3.2 线索二叉树的基本运算 170

7.4 树、森林和二叉树的关系 174

7.4.1 树的存储结构 174

7.4.2 树、森林与二叉树的转换 177

7.4.3 树和森林的遍历 179

7.4.4 树的应用 180

7.5 哈夫曼树及其应用 181

7.5.1 哈夫曼树的定义 181

7.5.2 哈夫曼树的构造 183

7.5.3 哈夫曼编码 186

7.6 本章小结 189

7.7 上机实训 189

7.7.1 实训目的 189

7.7.2 实训例题 189

7.8 习题与上机操作 196

第8章 图 200

8.1 图的基本概念 200

8.1.1 基本概念 200

8.1.2 基本术语 201

8.1.3 基本操作 203

8.2 图的存储结构 204

8.2.1 邻接矩阵表示法 204

8.2.2 邻接表表示法 206

8.3 图的遍历 210

8.3.1 图的深度优先搜索遍历 210

8.3.2 图的广度优先搜索遍历 212

8.4 连通网的最小生成树 214

8.4.1 求无向图的连通分量 214

8.4.2 生成树的概念 214

8.4.3 最小生成树 215

8.5 最短路径 219

8.5.1 求某一顶点到其他各顶点的最短路径——迪杰斯特算法 219

8.5.2 求任意一对顶点间的最短路径 221

8.6 拓扑排序 223

8.6.1 AOV网 223

8.6.2 拓扑排序的过程 224

8.7 图的应用举例 225

8.7.1 图的建立及遍历实用程序 225

8.7.2 图的拓扑排序实用程序 228

8.8 本章小结 230

8.9 上机实训 230

8.9.1 实训目的 230

8.9.2 实训例题 231

8.10 习题与上机操作 239

第9章 查找表 244

9.1 查找表的基本概念 244

9.1.1 基本概念 244

9.1.2 术语 244

9.2 静态查找表 246

9.2.1 顺序表查找 247

9.2.2 折半查找 248

9.2.3 索引顺序查找 250

9.3 动态查找表 251

9.3.1 二叉查找树的定义 251

9.3.2 二叉查找树的查找过程 252

9.3.3 二叉查找树的插入操作 253

9.3.4 二叉查找树的删除操作 254

9.3.5 二叉查找树的性能分析 255

9.4 哈希表查找 256

9.4.1 哈希表的基本概念 256

9.4.2 构造哈希表的方法 257

9.4.3 处理冲突的方法 260

9.4.4 哈希表的查找性能 264

9.5 本章小结 266

9.6 上机实训 266

9.6.1 实训目的 266

9.6.2 实训例题 267

9.7 习题与上机操作 274

第10章 排序 277

10.1 基本概念 277

10.1.1 概述 277

10.1.2 基本术语 278

10.2 插入排序 279

10.2.1 直接插入排序 279

10.2.2 希尔排序 281

10.3 交换排序 283

10.3.1 冒泡排序 283

10.3.2 快速排序 285

10.4 选择排序 288

10.4.1 直接选择排序 288

10.4.2 堆排序 289

10.5 归并排序 293

10.5.1 归并排序的概念 293

10.5.2 二路归并排序 294

10.5.3 归并排序的算法 294

10.5.4 算法分析 295

10.6 基数排序 295

10.6.1 多关键词排序 295

10.6.2 基数排序 296

10.7 外部排序 297

10.7.1 问题的提出 297

10.7.2 外部排序的基本过程 299

10.8 各种内部排序方法的比较 301

10.9 排序的应用举例 302

10.9.1 希尔排序的实用程序 302

10.9.2 快速排序的实用程序 304

10.10 本章小结 305

10.11 上机实训 306

10.11.1 实训目的 306

10.11.2 实训例题 306

10.12 习题与上机操作 311

参考文献 315