第1章 绪论 1
1.1 什么是数据结构 1
1.1.1 发展历史 1
1.1.2 数据结构 1
1.2 基本概念和术语 3
1.3 算法的描述和算法分析 4
1.3.1 算法的描述 4
1.3.2 算法的分析 6
习题1 8
第2章 线性表 9
2.1 线性表及其基本运算 9
2.2 线性表的存储结构 11
2.2.1 线性表的顺序存储结构 11
2.2.2 线性表的链式存储结构 14
习题2 35
第3章 栈和队列 36
3.1 栈 36
3.1.1 栈的定义及其基本运算 36
3.1.2 栈的存储结构 36
3.2 队列 48
3.2.1 队列的定义及基本运算 48
3.2.2 队列的顺序存储结构 49
3.2.3 队列的链式存储结构——链队列 54
习题3 56
第4章 串和数组 57
4.1 串的运算 57
4.1.1 字符串的概念 57
4.1.2 字符串的运算 57
4.2 串的存储结构 60
4.2.1 串的顺序存储 60
4.2.2 串的链式存储 62
4.2.3 两种存储方式存储串时的操作 63
4.3 数组 64
4.3.1 有关数组(Array)的一些概念 64
4.3.2 数组存储的排列顺序 65
4.3.3 数组的运算 65
4.3.4 数组的顺序存储 66
4.4 稀疏矩阵 66
4.4.1 稀疏矩阵 66
4.3.2 稀疏矩阵的存储 68
4.3.3 稀疏矩阵的运算 69
习题4 73
第5章 树 74
5.1 树的定义和运算 74
5.1.1 树的定义 74
5.1.2 树的基本术语 76
5.1.3 树的基本运算 76
5.2 二叉树的遍历 76
5.2.1 二叉树的定义 76
5.2.2 二叉树的遍历 77
5.3 二叉排序树 80
5.3.1 二叉排序树的定义 80
5.3.2 二叉排序树的插入、生成和删除 80
5.4 哈夫曼树 83
5.4.1 基本术语 83
5.4.2 构造哈夫曼树 85
5.4.3 哈夫曼树的应用 86
习题5 91
第6章 查找 92
6.1 顺序查找 92
6.2 折半查找 95
6.3 分段查找 97
6.4 树形结构的查找 99
6.4.1 汉字内码的查找 99
6.4.2 利用二叉排序树查找 100
6.5 哈希表的查找 102
6.5.1 哈希查找的有关概念 102
6.5.2 构造哈希函数的常用方法 102
6.5.3 处理地址冲突的常用方法 105
6.5.4 哈希查找算法的评价 106
习题6 107
第7章 排序 108
7.1 排序的有关概念和术语 108
7.2 选择排序 109
7.3 堆排序 114
7.4 起泡排序 118
7.5 插入排序 121
7.6 移动最少和比较最少的插入排序 127
7.6.1 链表插入排序 127
7.6.2 折半插入 128
7.6.3 希尔分类 130
7.7 利用二叉树进行插入排序 133
7.8 快速分类 136
7.9 合并排序与外部排序 139
7.9.1 合并排序 139
7.9.2 外部排序 142
7.10 多关键字排序 142
7.10.1 低关键字优先排序 143
7.10.2 高关键字优先排序 145
习题7 148
第8章 图 150
8.1 图的概念及术语 150
8.2 图的存储结构 151
8.2.1 多重表 151
8.2.2 邻接矩阵 152
8.2.3 关联矩阵 152
8.2.4 邻接表 153
8.2.5 十字链表 155
8.3 图的深度优先搜索 155
8.4 广度优先搜索 161
8.5 图的连通性 167
8.6 最短路问题 173
习题8 178