第1章 数据结构和算法简介
1.1 问题引入
1.1.1 查找电话号码问题
1.1.2 问题求解基本步骤
1.2 认识数据结构
1.2.1 数据的概念
1.2.2 数据元素和数据项
1.2.3 数据结构的概念
1.2.4 数据结构的存储
1.3 认识算法
1.3.1 算法的定义及特征
1.3.2 算法性能分析与度量
1.4 寻求问题求解的实现方法
本章小结
综合练习
第2章 解决线性表的编程问题
学习情境:用线性表解决学生成绩表的编程
2.1 认识线性表
2.1.1 分析线性表的逻辑结构
2.1.2 识别线性表的基本操作
2.2 用顺序表解决线性表的编程问题
2.2.1 用顺序表表示线性表
2.2.2 对顺序表进行操作
2.2.3 顺序表在学生成绩表中的应用独立实践
2.3 用单链表解决线性表的编程问题
2.3.1 用单链表表示线性表
2.3.2 对单链表进行操作
2.3.3 单链表在学生成绩表中的应用独立实践
2.4 用双向链表解决线性表的编程问题
2.4.1 用双向链表表示线性表
2.4.2 对双向链表进行操作
2.4.3 双向链表在学生成绩表中的应用独立实践
2.5 用循环链表解决线性表的编程问题
2.5.1 用循环链表表示线性表
2.5.2 对循环链表进行操作
2.5.3 循环链表在学生成绩表中的应用独立实践
2.6 度量不同存储结构的算法效率
2.6.1 分析顺序表的算法效率
2.6.2 分析单链表的算法效率
本章小结
综合练习
第3章 解决堆栈的编程问题
学习情境:用堆栈解决火车车厢重排问题的编程
3.1 认识堆栈
3.1.1 分析堆栈的逻辑结构
3.1.2 识别堆栈的基本操作
3.2 用顺序栈解决堆栈的编程问题
3.2.1 用顺序栈表示堆栈
3.2.2 对顺序栈进行操作
3.2.3 用顺序栈解决火车车厢重排问题的编程
3.3 用链栈解决堆栈的编程问题
3.3.1 用链栈表示堆栈
3.3.2 对链栈进行操作
3.3.3 用链栈解决火车车厢重排问题的编程
独立实践
本章小结
综合练习
第4章 解决队列的编程问题
学习情境:用队列解决银行排队叫号软件的编程
4.1 认识队列
4.1.1 分析队列的逻辑结构
4.1.2 识别队列的基本操作
4.2 用顺序队列解决队列的编程问题
4.2.1 用顺序存储结构表示队列
4.2.2 对顺序队列进行操作
4.2.3 用循环顺序队列解决银行排队叫号软件的编程
4.3 用链队列解决队列的编程问题
4.3.1 用链队列表示队列
4.3.2 对链队列进行操作
4.3.3 用链队列解决银行排队叫号软件的编程
独立实践
本章小结
综合练习
第5章 解决串的编程问题
学习情境:用串解决“以一敌百”游戏的编程
5.1 认识串
5.1.1 分析串的逻辑结构
5.1.2 识别串的基本操作
5.2 用顺序存储解决串的编程问题
5.2.1 用顺序存储结构表示串
5.2.2 对顺序串进行操作
5.2.3 用顺序串解决“以一敌百”游戏的编程
独立实践
本章小结
综合练习
第6章 解决数组的编程问题
学习情境:用数组解决数学魔术游戏编程
6.1 认识数组
6.1.1 分析数组的逻辑结构
6.1.2 识别数组的基本操作
6.1.3 用顺序存储结构存储数组
6.1.4 编程实现数组的基本操作
6.1.5 用数组解决数学魔术游戏的编程
独立实践
学习情境:用特殊矩阵解决查询城市间的距离的编程
6.2 认识特殊矩阵
6.2.1 分析特殊矩阵的逻辑结构
6.2.2 特殊矩阵的压缩存储
6.2.3 用特殊矩阵解决查询城市间距离的编程
独立实践
学习情境:用稀疏矩阵解决超市物品购买数据的编程
6.3 认识稀疏矩阵
6.3.1 描述稀疏矩阵的逻辑结构
6.3.2 稀疏矩阵的压缩存储
6.3.3 编程实现稀疏矩阵的基本运算
6.3.4 用稀疏矩阵实现超市物品购买数据的编程
独立实践
本章小结
综合练习
第7章 解决二叉树的编程问题
学习情境:解决快速搜索磁盘文件中记录的问题
7.1 认识二叉树
7.1.1 分析二叉树的逻辑结构
7.1.2 识别二叉树的基本操作
7.1.3 识别二叉树的主要性质
7.2 二叉树的存储实现
7.2.1 用顺序存储结构表示二叉树
7.2.2 用链式存储结构表示二叉树
7.3 二叉树的遍历方法及递归实现
7.4 用二叉搜索树解决快速搜索磁盘文件中记录的问题
独立实践
7.5 最优二叉树——哈夫曼树
7.5.1 哈夫曼树的基本概念
7.5.2 哈夫曼树的构造算法
本章小结
综合练习
第8章 解决树和森林的编程问题
学习情境:用树来解决学院组织结构的编程问题
8.1 认识树
8.1.1 分析树的逻辑结构
8.1.2 树的逻辑表示
8.1.3 识别树的基本操作
8.2 实现树的存储
……
第9章 解决图的编程问题
第10章 实现排序算法
第11章 执行查询算法
参考文献