第1章 绪论 1
1.1 什么是数据结构 1
1.1.1 数据的逻辑结构 3
1.1.2 数据的存储结构 4
1.2 算法与算法设计 6
1.2.1 算法的概念 6
1.2.2 算法设计 7
1.3 算法分析 9
1.3.1 算法的渐进分析 9
1.3.2 最坏、最好和平均情况 12
1.3.3 时间和空间资源开销 14
1.4 数据结构的选择和评价 14
习题 15
第2章 线性表 16
2.1 线性表的概念 16
2.1.1 线性表的定义及特征 16
2.1.2 线性表的抽象数据类型 17
2.1.3 线性表的存储结构 18
2.1.4 线性表运算分类 18
2.2 顺序表 18
2.2.1 顺序表的实现 19
2.2.2 多维数组 23
2.3 链表 25
2.3.1 链表的实现 26
2.3.2 线性表实现方法的比较 35
2.4 栈 36
2.4.1 顺序栈 36
2.4.2 链式栈 39
2.4.3 栈与递归 41
2.5 队列 44
2.5.1 顺序队列 45
2.5.2 链式队列 48
2.6 字符串 50
2.6.1 基本概念 50
2.6.2 存储结构和实现 52
2.6.3 字符串运算的算法实现 55
2.6.4 字符串的模式匹配 58
2.7 线性表的应用 63
2.7.1 栈:简易计算器 63
2.7.2 队列:银行叫号系统的实现 69
2.7.3 字符串及链表:简易文本编辑器 75
习题 79
第3章 树 81
3.1 树的基本概念 81
3.1.1 树的定义和基本术语 81
3.1.2 树的基本性质 82
3.1.3 树的逻辑表示方式 83
3.2 二叉树 85
3.2.1 二叉树的定义和相关概念 85
3.2.2 几种特殊的二叉树 85
3.2.3 二叉树的性质 87
3.2.4 二叉树的存储结构 88
3.2.5 二叉树的抽象数据类型 90
3.2.6 二叉树的遍历 92
3.2.7 线索二叉树 97
3.2.8 二叉搜索树 102
3.2.9 平衡二叉树 108
3.2.10 堆与优先队列 117
3.2.11 Huffman编码树 124
3.3 树与森林 127
3.3.1 二叉树、树、森林之间的转换 127
3.3.2 树和森林的遍历 129
3.3.3 树的存储 131
3.4 树的应用 134
3.4.1 二叉树:图像压缩算法 134
3.4.2 树:医院设施管理 137
习题 141