第1章 绪论 1
1.1 基本概念和术语 1
案例1.1 数据模型的确定 1
1.2 算法和算法评价 4
案例1.2 矩阵乘法算法的时间复杂度分析 4
本章小结 7
习题1 8
第2章 线性表 9
2.1 线性表的顺序存储 9
案例2.1 模拟集合的基本运算 9
2.2 线性表的链式存储 18
案例2.2 一元多项式的加法运算 18
案例2.3 采用循环链表模拟约瑟夫(Josephus)问题 32
本章小结 38
习题2 38
第3章 栈和队列 40
3.1 栈 40
案例3.1 数制转换(十进制数转换为二、八、十六进制数) 40
案例3.2 后缀表达式的求值 50
3.2 栈与递归 57
案例3.3 迷宫问题 57
3.3 队列 65
案例3.4 农夫过河问题 65
本章小结 79
习题3 79
第4章 串、多维数组和广义表 80
4.1 串 80
案例4.1 模拟“天书密码”的生成和破解 80
案例4.2 无回溯的模式匹配 88
4.2 多维数组和广义表 97
案例4.3 稀疏矩阵的转置 97
本章小结 109
习题4 109
第5章 树和二叉树 111
5.1 树和二叉树的存储表示 111
案例5.1 完全二叉树的基本运算 111
5.2 树和二叉树的遍历 123
案例5.2 表达式树的构造及输出 123
5.3 线索二叉树 135
案例5.3 中序线索二叉树及其遍历 135
5.4 哈夫曼树及其应用 141
案例5.4 哈夫曼编码器 141
本章小结 148
习题5 148
第6章 图 150
6.1 图的存储和遍历 150
案例6.1 图的连通性判定 150
6.2 最小生成树和最短路径 165
案例6.2 局域网络布线问题 165
6.3 有向无环图及其应用 178
案例6.3 教学计划的编制 178
本章小结 187
习题6 187
第7章 查找 189
7.1 线性表的查找 189
案例7.1 学生信息表的分块查找 189
7.2 树表的查找 200
案例7.2 借助二叉排序树实现单词统计 200
7.3 散列表的查找 215
案例7.3 散列表的双散列探测查找 215
本章小结 226
习题7 226
第8章 排序 227
8.1 插入排序 227
案例8.1 希尔排序 227
8.2 交换排序 233
案例8.2 双向冒泡排序 233
8.3 选择排序 238
案例8.3 堆排序 238
8.4 归并排序和基数排序 245
案例8.4 链式基数排序 245
本章小结 253
习题8 253
第9章 综合实训 255
实训1 停车场管理 255
实训2 五叉路口交通灯的管理系统 264
本章小结 270
习题9 271