目录 第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 参考文献