第1章 绪论
1.1 数据结构的概念及分类
1.1.1 为什么要学习数据结构
1.1.2 与数据结构相关的基本术语
1.1.3 数据结构的分类
1.1.4 数据结构的存储结构
1.1.5 定义在数据结构上的操作
1.1.6 “好”的数据结构
1.2 使用C语言描述数据结构
1.2.1 C语言的数据类型
1.2.2 算法的控制结构
1.2.3 算法的函数结构
1.2.4 动态存储分配
1.2.5 逻辑和关系运算的约定
1.2.6 输入与输出
1.3 算法和算法设计
1.3.1 算法的定义和特性
1.3.2 算法的设计步骤
1.3.3 算法设计的基本方法
1.4 算法分析与度量
1.4.1 算法的评价标准
1.4.2 算法的时间和空间复杂性度量
1.4.3 算法的渐进分析
小结
习题
第2章 线性表
2.1 线性表
2.1.1 线性表的定义和特点
2.1.2 线性表的主要操作
2.2 顺序表
2.2.1 顺序表的定义和特点
2.2.2 顺序表的结构定义
2.2.3 顺序表主要操作的实现
2.2.4 顺序表主要操作的性能分析
2.2.5 顺序表的应用举例
2.3 单链表
2.3.1 单链表的定义和特点
2.3.2 单链表的结构定义
2.3.3 单链表中指针的操作
2.3.4 单链表中的插入与删除
2.3.5 带头结点的单链表
2.3.6 单链表主要操作的性能分析
2.3.7 单链表的顺序访问与尾递归
2.3.8 单链表的应用举例
2.4 顺序表与线性链表的比较
2.5 线性链表的其他变形
2.5.1 循环链表
2.5.2 双向链表
2.5.3 静态链表
2.6 线性表的应用:一元多项式及其运算
2.6.1 一元多项式的表示
2.6.2 多项式的结构定义
2.6.3 多项式的加法
2.6.4 多项式的乘法
小结
习题
第3章 栈和队列
3.1 栈
3.1.1 栈的概念
3.1.2 顺序栈
3.1.3 链式栈
3.1.4 栈的混洗
3.2 队列
3.2.1 队列的概念
3.2.2 循环队列
3.2.3 链式队列
3.3 栈的应用
3.3.1 数制转换
3.3.2 括号匹配
3.3.3 表达式的计算与优先级处理
3.3.4 栈与递归的实现
3.4 队列的应用
3.4.1 打印杨辉三角形与逐行处理
3.4.2 电路布线与两点间的*短路径
3.5 在算法设计中使用递归
3.5.1 汉诺塔问题与分治法
3.5.2 迷宫问题与回溯法
3.5.3 计算组合数与动态规划
3.6 双端队列
3.6.1 双端队列的概念
3.6.2 输入受限的双端队列
3.6.3 输出受限的双端队列
3.6.4 双端队列的顺序存储表示
3.6.5 双端队列的链接存储表示
小结
习题
第4章 数组、串和广义表
4.1 数组
4.1.1 一维数组
4.1.2 多维数组
4.1.3 数组的应用举例
4.2 特殊矩阵的压缩存储
4.2.1 对称矩阵的压缩存储
4.2.2 三对角矩阵的压缩存储
4.3 稀疏矩阵
4.3.1 稀疏矩阵的概念
4.3.2 稀疏矩阵的三元组表表示
4.3.3 稀疏矩阵的十字链表表示
4.4 字符串
4.4.1 字符串的概念
4.4.2 字符串的初始化和赋值
4.4.3 C语言中有关字符串的库函数
4.4.4 自定义字符串的存储表示
4.4.5 串的模式匹配
4.5 广义表
4.5.1 广义表的概念
4.5.2 广义表的性质
4.5.3 广义表的链接表示
4.5.4 三元多项式的表示
小结
习题
第5章 树与二叉树
5.1 树的基本概念
5.1.] 树的定义和术语
5.1.2 树的基本操作
5.2 二叉树
5.2.1 二叉树的概念
5.2.2 二叉树的性质
5.2.3 二叉树的主要操作
5.3 二叉树的存储表示
5.3.1 二叉树的顺序存储表示
5.3.2 二叉树的链表存储表示
5.4 二叉树的遍历
5.4.1 二叉树遍历的递归算法
5.4.2 递归遍历算法的应用举例
5.4.3 二叉树遍历的非递归算法
5.4.4 非递归遍历算法的应用举例
5.4.5 二叉树的计数
5.5 线索二叉树
5.5.1 线索二叉树的概念
5.5.2 线索二叉树的种类
5.5.3 中序线索二叉树的建立和遍历
5.5.4 前序与后序线索二叉树
5.6 树与森林
5.6.1 树的存储表示
5.6.2 森林与二叉树的转换
5.6.3 树与森林的深度优先遍历
5.6.4 树与森林的广度优先遍历
5.6.5 树遍历算法的应用举例
小结
习题
第6章 树与二叉树的应用
6.1 二叉查找树
6.1.1 二叉查找树的概念
6.1.2 二叉查找树的查找
6.1.3 二叉查找树的插入
6.1.4 二叉查找树的删除
6.1.5 二叉查找树的性能分析
6.2 AVL树
第7章 图
第8章 查找
第9章 内排序
第10章 外排序
附录A 程序索引
附录B 实训作业要求与样例
参考文献