第1章绪论
1.1引言
1.1.1从问题到程序的基本过程
1.1.2什么是数据结构
1.2数据结构基本概念
1.2.1数据
1.2.2数据元素
1.2.3数据项
1.3逻辑结构与存储结构
1.3.1数据的逻辑结构
1.3.2数据的存储结构
1.4认识算法
1.4.1算法的定义
1.4.2算法的特征
1.4.3算法性能分析与度量
1.5抽象数据类型
本章小结
综合练习
第2章线性表
2.1认识线性表
2.1.1线性表的逻辑结构
2.1.2线性表的基本操作
2.1.3线性表的抽象数据类型
2.2线性表的实现
2.2.1用顺序表实现线性表
2.2.2用单链表实现线性表
2.2.3用双向链表实现线性表
2.2.4用循环链表实现线性表
2.3线性表的应用
2.3.1用顺序表实现约瑟夫环
2.3.2用单链表实现约瑟夫环
2.3.3用Java类实现约瑟夫环
2.3.4独立实践
2.4度量不同存储结构的算法效率
2.4.1分析顺序表的算法效率
2.4.2分析单链表的算法效率
本章小结
综合练习
第3章堆栈
3.1认识堆栈
3.1.1堆栈的逻辑结构
3.1.2堆栈的基本操作
3.1.3堆栈的抽象数据类型
3.2堆栈的实现
3.2.1用顺序栈实现堆栈
3.2.2用链栈实现堆栈
3.3堆栈的应用
3.3.1用顺序栈实现迷宫路径搜索问题的求解
3.3.2用链式栈实现迷宫路径搜索问题的求解
3.3.3用Java类库实现迷宫路径搜索问题的求解
3.3.4独立实践
本章小结
综合练习
第4章解决队列的编程问题
4.1认识队列
4.1.1队列的逻辑结构
4.1.2队列的基本操作
4.1.3队列的抽象数据类型
4.2队列的实现
4.2.1用顺序队列实现队列
4.2.2用链队列实现队列
4.3队列的应用
4.3.1用顺序队列实现银行排队叫号服务
4.3.2用链队列实现银行排队叫号服务
4.3.3用Java类库实现银行排队叫号服务
4.3.4独立实践
本章小结
综合练习
第5章串
5.1认识串
5.1.1串的逻辑结构
5.1.2串的基本操作
5.1.3串的抽象数据类型
5.2Java的字符串类
5.2.1Java中的字符串类String
5.2.2Java中的字符串类StringBuilder和StringBuffer
5.3串的应用
5.3.1用串解决“以一敌百”游戏的编程
5.3.2独立实践
本章小结
综合练习
第6章二叉树
6.1认识二叉树
6.1.1二叉树的逻辑结构
6.1.2二叉树的基本操作
6.1.3二叉树的抽象数据类型
6.2二叉树的实现
6.2.1二叉树的顺序存储
6.2.2二叉树的链式存储
6.3二叉树的遍历方法及递归实现
6.4二叉树的应用
6.4.1哈夫曼树的基本概念
6.4.2使用哈夫曼树的算法求报文字符编码
6.4.3报文传输编码的实现
6.4.4独立实践
本章小结
综合练习
第7章图
7.1认识图
7.1.1图的逻辑结构
7.1.2图的基本操作
7.1.3图的抽象数据类型
7.2图的实现
7.2.1用邻接矩阵实现图
7.2.2用邻接表实现图
7.2.3图遍历算法的实现
7.2.4图*短路径算法的实现
7.3图的应用
7.3.1用邻接矩阵解决高速公路交通网的编程
7.3.2用邻接表解决高速公路交通网的编程
7.3.3独立实践
本章小结
综合练习
第8章排序
8.1认识排序
8.1.1排序概念
8.1.2排序的分类
8.2插入排序
8.2.1直接插入排序
8.2.2希尔排序
8.3选择排序
8.3.1直接选择排序
8.3.2堆排序
8.4交换排序
8.4.1冒泡排序
8.4.2快速排序
8.5归并排序
8.6基数排序
8.7排序的应用
8.7.1编程实现第29届奥运会奥运奖牌的排名
8.7.2独立实践
本章小结
综合练习
第9章查找
9.1认识查找
9.2线性表查找技术
9.2.1顺序查找
9.2.2二分查找
9.2.3分块查找
9.3树表查找技术
9.3.1认识二叉排序树
9.3.2构建二叉排序树
9.4哈希表查找技术
9.4.1认识哈希表
9.4.2构造哈希函数
9.4.3解决哈希冲突
9.4.4哈希表查找的算法实现
9.4.5分析哈希表的性能
9.5查找的应用
9.5.1编程实现查找和管理某公司员工信息
9.5.2独立实践
本章小结
综合练习
参考文献