本书是为“数据结构”课程编写的教材,主要介绍各种基本类型的数据结构及其算法实现。本书所有算法都有算法功能说明、算法思想分析、详尽的实例描述、C语言编写并可编译执行的完整程序及运行结果图示,典型算法附有算法分析。
本书是数据结构的入门书籍,结构严谨,条理清晰,按照线性数据结构、层次数据结构和网状数据结构的顺序,由易到难介绍主要抽象数据类型及其应用,最后介绍各种查找和排序方法。抽象的数据结构原理与算法实现紧密结合的写作特点使读者能够快速而卓有成效地掌握数据结构原理和经典算法,以加深读者对数据结构和算法的理解,从而提高编程能力。
本书可以作为高等院校信息管理类专业的本科和专科教材,也可以作为其他理工科专业的选修教材或实验指导教材。
样章试读
目录
- 第1章 绪论
1.1 数据结构与程序设计
1.1.1 学习数据结构的意义
1.1.2 数据与数据结构
1.1.3 数据结构类型
1.2 抽象数据类型
1.2.1 C语言中的数据类型
1.2.2 抽象数据类型
1.3 算法分析
1.3.1 问题、算法与程序
1.3.2 算法效率的度量
本章小结
思考与练习题
第2章 线性表
2.1 线性表的基本概念
2.1.1 线性表的定义与特点
2.1.2 线性表的两类存储结构
2.2 顺序表的算法实现
2.2.1 顺序表的创建
2.2.2 顺序表内结点的插入
2.2.3 顺序表内结点的查找
2.2.4 顺序表内元素的删除
2.3 单链表的算法实现
2.3.1 单链表的结点结构和一般形式
2.3.2 单链表的创建
2.3.3 单链表内元素的插入
2.3.4 单链表内元素的查找
2.3.5 单链表内元素的删除
2.3.6 两个单链表的合并
2.4 双向链表的算法实现
2.4.1 双向链表的结点结构和一般形式
2.4.2 双向链表的创建
2.4.3 双向链表内元素的插入
2.4.4 双向链表内元素的查找
2.4.5 双向链表内元素的删除
2.5 循环链表的算法实现
2.5.1 循环链表的结点结构和一般形式
2.5.2 循环链表的创建
本章小结
思考与练习题
第3章 栈与队列
3.1 栈的基本概念
3.1.1 栈的定义与特点
3.1.2 栈的两类存储结构
3.2 顺序栈的算法实现
3.2.1 顺序栈的建立和入栈
3.2.2 顺序栈出栈
3.3 队列的基本概念
3.3.1 队列的定义与特点
3.3.2 队列的存储结构
3.4 顺序队列的算法实现
3.4.1 顺序队列建立和入队
3.4.2 顺序队列出队
3.5 循环队列的算法实现
3.5.1 循环队列建立和入队
3.5.2 循环队列出队
3.6 链队列的算法实现
3.6.1 链队列建立和入队
3.6.2 链队列出队
3.7 栈和队列的应用——算术表达式求值
本章小结
思考与练习题
第4章 串
4.1 串的基本概念
4.1.1 串的定义与特点
4.1.2 串的存储结构
4.2 串的算法实现
4.2.1 串赋值算法
4.2.2 求子串算法
4.2.3 串比较算法
4.2.4 串联接算法
4.3 串的模式匹配算法实现
4.3.1 串的朴素模式匹配算法
4.3.2 改进的模式匹配算法
本章小结
思考与练习题
第5章 数组和广义表
5.1 数组的基本概念
5.1.1 数组的定义与特点
5.1.2 数组的存储结构
5.2 特殊矩阵的压缩存储
5.3 矩阵的算法实现
5.4 广义表的基本概念
5.4.1 广义表的定义与图形表示
5.4.2 广义表的存储结构
5.5 广义表的算法实现
本章小结
思考与练习题
第6章 树和二叉树
6.1 树的基本概念
6.1.1 树的定义与基本术语
6.1.2 树的表示形式和存储结构
6.2 二叉树的基本概念
6.2.1 二叉树的定义与性质
6.2.2 二叉树的存储结构
6.2.3 树、森林和二叉树的转换
6.2.4 二叉树的遍历
6.3 二叉树算法实现
6.3.1 二叉树的建立
6.3.2 递归的二叉树前序遍历
6.3.3 非递归的二叉树前序遍历
6.3.4 递归的二叉树中序遍历
6.3.5 非递归的二叉树中序遍历
6.3.6 递归的二叉树后序遍历
6.3.7 非递归的二叉树后序遍历
6.4 哈夫曼树及其应用
6.4.1 哈夫曼树与哈夫曼编码
6.4.2 哈夫曼算法实现
本章小结
思考与练习题
第7章 图
7.1 图的基本概念
7.1.1 图的定义和术语
7.1.2 图的表示与存储结构
7.2 图的构造算法实现
7.2.1 构造数组存储的图
7.2.2 构造邻接表存储的无向图
7.2.3 构造邻接表存储的有向图
7.2.4 构造十字链表存储的有向图
7.2.5 构造邻接多重表存储的无向图
7.3 图的遍历算法实现
7.3.1 深度优先遍历算法
7.3.2 广度优先遍历算法
7.4 最小生成树算法实现
7.4.1 普里姆算法
7.4.2 克鲁斯卡尔算法
7.5 图的应用
7.5.1 拓扑排序
7.5.2 关键路径
7.5.3 最短路径
本章小结
思考与练习题
第8章 查找
8.1 查找的基本概念
8.1.1 相关术语
8.1.2 查找表结构
8.2 顺序查找算法的实现
8.3 折半查找算法的实现
8.4 分块查找算法
8.4.1 索引表
8.4.2 分块查找算法实现
8.5 二叉排序树及其算法实现
8.5.1 二叉排序树及其查找过程
8.5.2 二叉排序树插入结点的过程
8.5.3 二叉排序树删除结点的过程
8.5.4 二叉排序树的算法实现
8.6 平衡二叉树及其算法实现
8.6.1 平衡二叉排序树及其构造
8.6.2 平衡二叉排序树算法实现
8.7 B-树及其算法实现
8.7.1 B-树
8.7.2 B-树的查找
8.7.3 B-树的插入
8.7.4 B-树的删除
8.7.5 B-树的算法实现
8.8 哈希查找的算法实现
8.8.1 哈希表
8.8.2 哈希函数构造方法
8.8.3 哈希冲突的处理方法
8.8.4 哈希表的算法实现
本章小结
思考与练习题
第9章 排序
9.1 排序的基本概念
9.1.1 术语介绍
9.1.2 常用的内容排序算法简介类型
9.2 插入排序的算法实现
9.2.1 直接插入排序
9.2.2 希尔排序
9.3 快速排序的算法实现
9.4 选择排序的算法实现
9.4.1 直接选择排序
9.4.2 堆排序
9.5 归并排序的算法实现
9.6 基数排序的算法实现
9.7 各种内部排序方法的比较
9.7.1 时间性能
9.7.2 空间性能
9.7.3 排序方法的稳定性
9.8 外部排序
本章小结
思考与练习题
第10章 文件
10.1 文件的基本概念
10.1.1 文件记录与文件结构
10.1.2 文件操作
10.2 文件的存储结构
10.2.1 顺序文件
10.2.2 索引文件
10.2.3 散列文件
10.2.4 多关键字文件
10.2.5 倒排序文件
本章小结
思考与练习题
参考文献