目录
第1章绪论
1.1数据结构的基本概念与学习方法
1.1.1数据结构的研究对象
1.1.2数据结构的基本概念和基本术语
1.2算法与数据结构
1.2.1算法的概念
1.2.2描述算法的方法
1.2.3算法分析
1.3学习算法与数据结构的意义和方法
1.4C语言的数据类型及其算法描述
1.4.1C语言的基本数据类型概述
1.4.2C语言的数组和结构体数据类型
1.4.3C语言的指针类型概述
1.4.4C语言的函数
1.4.5用C语言验证算法的方法
1.5从C语言到C++语言
1.5.1C++语言的类和抽象数据类型
1.5.2C++语言验证算法的方法
1.5.3C++语言与C语言程序的区别
1.5.4C++语言的重要特性
习题1
上机练习1
第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.4线性表的应用示例
2.5C++中的线性表
2.5.1C++中线性表抽象数据类型
2.5.2C++中线性表的顺序存储
2.5.3C++中线性表的链式存储
习题2
上机练习2
第3章栈和队列
3.1栈
3.1.1栈的基本概念
3.1.2栈的顺序存储结构
3.1.3栈的链式存储结构
3.2栈的应用实例
3.2.1表达式求值
3.2.2栈与函数调用
3.2.3栈在回溯法中的应用
3.3队列
3.3.1队列的基本概念
3.3.2队列的顺序存储结构
3.3.3队列的链式存储结构
3.4队列的应用实例
3.4.1舞伴问题
3.4.2打印队列的模拟管理
3.5递归
3.5.1递归的定义及递归模型
3.5.2递归的实现
3.5.3递归设计
3.5.4递归到非递归的转换
3.6C++中的栈和队列
3.6.1C++中的栈
3.6.2C++中的队列
习题3
上机练习3
第4章数组和字符串
4.1数组
4.1.1数组的定义与操作
4.1.2数组的顺序存储结构
4.1.3矩阵的压缩存储方法
4.2字符串
4.2.1字符串的定义与操作
4.2.2字符串的存储结构
4.2.3字符串基本操作的实现
4.2.4字符串的应用举例
4.3C++中的数组和字符串
4.3.1C++中的数组
4.3.2C++中的字符串
习题4
上机练习4
第5章树
5.1树的概念与操作
5.1.1树的概念
5.1.2树的基本操作
5.2二叉树
5.2.1二叉树的概念
5.2.2二叉树的性质
5.2.3二叉树的存储结构及其实现
5.3二叉树的遍历
5.3.1递归的遍历算法
5.3.2二叉树遍历操作应用举例
5.4线索二叉树
5.4.1线索二叉树的定义
5.4.2线索二叉树的常用运算
5.5一般树的表示和遍历
5.5.1一般树的表示
5.5.2二叉树与树、森林之间的转换
5.5.3一般树的遍历
5.6哈夫曼树及其应用
5.6.1哈夫曼树
5.6.2哈夫曼树的应用
5.7C++中的树
5.7.1C++中的二叉树结点类
5.7.2C++中的二叉树类
5.7.3C++中二叉树的非递归遍历
习题5
上机练习5
第6章图
6.1图的概念与操作
6.1.1图的定义
6.1.2图的基本术语
6.2图的存储结构
6.2.1邻接矩阵
6.2.2邻接表
6.2.3十字链表
6.2.4边集数组
6.3图的遍历
6.3.1深度优先搜索
6.3.2广度优先搜索
6.4图的连通性
6.4.1无向图的连通分量
6.4.2生成树和最小代价生成树
6.5有向无环图及应用
6.5.1拓扑排序
6.5.2关键路径
6.6最短路径及应用
6.6.1单源最短路径
6.6.2每对顶点之间的最短路径
6.7C++中的图
6.7.1C++中的图类
6.7.2图的邻接表的C++程序
6.7.3图的遍历的C++程序
6.7.4图的最小生成树的C++程序
习题6
上机练习6
第7章查找
7.1基本概念与术语
7.2静态查找表
7.2.1静态查找表结构
7.2.2顺序查找
7.2.3有序表的折半查找
7.2.4有序表的插值查找和斐波那契查找
7.2.5分块查找
7.3动态查找表
7.3.1二叉排序树
7.3.2平衡二叉树
7.3.3B树和B+树
7.4哈希表查找
7.4.1哈希表与哈希方法
7.4.2常用的哈希方法
7.4.3处理冲突的方法
7.4.4哈希表的查找分析
7.5C++中的查找
7.5.1静态查找的C++程序
7.5.2动态查找的C++程序
习题7
上机练习7
第8章排序
8.1基本概念
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外存信息的存取
8.7.2外部排序的基本方法
8.8C++中的排序
习题8
上机练习8
第9章常用算法设计技术
9.1蛮力算法
9.1.1蛮力算法思想
9.1.2蛮力算法应用实例——最近对问题
9.2分治算法
9.2.1分治算法思想
9.2.2分治算法设计
9.2.3分治算法设计应用实例——棋盘覆盖问题
9.3动态规划算法
9.3.1动态规划算法思想及设计
9.3.2动态规划算法应用实例——0/1背包问题
9.4贪心算法
9.4.1贪心算法技术思想
9.4.2贪心算法设计
9.4.3贪心算法应用实例——背包问题
9.5回溯算法
9.5.1回溯算法有关概念
9.5.2回溯算法思想
9.5.3回溯算法设计
9.5.4回溯算法应用实例——装载问题
9.6分支限界算法
9.6.1分支限界算法思想
9.6.2分支限界算法设计
9.6.3分支限界算法应用实例——任务分配问题
习题9
上机练习9
第10章标准模板库
10.1STL简介
10.1.1容器
10.1.2迭代器
10.1.3算法
10.2STL应用实例
10.2.1双向链表操作的STL实现
10.2.2STL测试程序
习题10
上机练习10
参考文献