第一章 引论 1
1.1 基本概念 1
1.2 算法的描述和实现 2
1.3 算法性能的评价 5
本章小结 7
习题一 7
第二章 线性表和栈、队 8
2.1 线性表的概念及其存储方法 8
2.1.1 基本概念 8
2.1.2 线性表的存储方法 9
2.2 线性表的运算 9
2.2.1 线性表的插入和删除 10
2.2.2 顺序查找 13
2.2.3 有序表的二分查找 16
2.3 栈和队 18
2.3.1 栈和队的概念 18
2.3.2 栈的运算 19
2.3.3 队的运算 20
2.4 栈的应用 24
2.4.1 程序中断和嵌套调用 24
2.4.2 程序的递归调用 26
2.4.3 简单表达式求值算法 27
本章小结 30
习题二 31
第三章 链表 33
3.1 单向链表 33
3.1.1 基本概念 33
3.1.2 插入结点和删除结点的操作方法 34
3.1.3 单向链表的查找算法 36
3.1.4 单向链表的插入和删除算法 39
3.2 有序链表 41
3.2.1 有序链表的查找算法 41
3.2.2 有序链表的插入和删除算法 42
3.2.3 有序链表的合并算法 43
3.3 其它形式的链表 46
3.3.1 循环链表 46
3.3.2 双向链表 46
3.3.3 栈和队的链式存储 49
3.3.4 用数组存储链表 51
本章小结 55
习题三 56
第四章 树 59
4.1 基本概念 59
4.1.1 树结构的有关术语 59
4.1.2 树的存储方法 61
4.2 二叉树 63
4.2.1 二叉树的概念 63
4.2.2 二叉树的基本性质和存储方法 64
4.2.3 满二叉树和完全二叉树 65
4.2.4 树、森林和二叉树的相互转换 66
4.3 二叉树的遍历 68
4.3.1 二叉树的遍历运算 68
4.3.2 遍历算法的递归过程 75
4.3.3 遍历运算的应用 76
4.3.4 遍历序列的性质 81
4.4 二叉树的构造方法 86
4.4.1 用先序序列加中序序列构造二叉树 86
4.4.2 用扩充先序序列构造二叉树 87
4.5 检索树 89
4.5.1 检索树的概念和查找算法 89
4.5.2 检索树的插入和构造算法 90
4.5.3 检索树的删除 93
4.5.4 检索树的应用 95
4.6 哈夫曼树 96
4.6.1 编码和编码树 96
4.6.2 哈夫曼树的构造 99
4.6.3 编码算法和译码算法 102
本章小结 103
习题四 104
第五章 排序 107
5.1 插入排序 107
5.1.1 直接插入排序 108
5.1.2 二分插入排序 110
5.1.3 希尔排序 111
5.2 冒泡排序 115
5.3 快速排序 118
5.4 堆排序 122
5.5 合并排序 126
5.5 基数排序 131
本章小结 136
习题五 137
参考文献 139