第一章 绪论 1
第一节 什么是数据结构 1
一、发展史 1
二、数据结构 1
第二节 基本概念和术语 2
第三节 算法的描述和算法分析 3
一、算法的描述 3
二、算法的分析 5
习题 7
第二章 线性表 8
第一节 线性表及其基本运算 8
第二节 线性表的存储结构 9
一、线性表的顺序存储结构 10
二、线性表的链式存储结构 12
习题 22
第三章 栈和队列 23
第一节 栈 23
一、栈的定义及其基本运算 23
二、栈的存储结构 23
第二节 队列 30
一、队列的定义及基本运算 30
二、队列的顺序存储结构 30
三、队列的链式存储结构——链队列 34
习题 35
第四章 串和数组 37
第一节 串的运算 37
一、字符串的概念 37
二、字符串的运算 37
第二节 串的存储结构 39
一、串的顺序存储 39
二、串的链接存储 41
三、两种存储方式的比较 42
第三节 数组 43
一、有关数组(array)的一些概念 43
二、数组存储的排列顺序 44
三、数组的运算 44
四、数组的顺序存储 44
第四节 稀疏矩阵 44
一、稀疏矩阵 44
二、稀疏矩阵的存储 45
三、稀疏矩阵的运算 46
习题 49
第五章 树 50
第一节 树的定义和运算 50
一、树的定义 50
二、树的基本术语 51
三、树的基本运算 52
第二节 二叉树的遍历 52
一、二叉树的定义 52
二、二叉树的遍历 52
第三节 二叉排序树 55
一、二叉排序树的定义 55
二、二叉排序树的插入、生成和删除 55
第四节 哈夫曼树 57
一、基本术语 58
二、构造哈夫曼树 58
三、哈夫曼树的应用 59
习题 61
第六章 查找 63
第一节 顺序查找 63
第二节 折半查找 64
第三节 分段查找 66
第四节 树形结构的查找 67
一、汉字内码的查找 67
二、利用二叉排序树查找 68
第五节 哈希表的查找 69
一、哈希查找的有关概念 69
二、构造哈希函数的常用方法 69
三、处理地址冲突的常用方法 71
四、哈希查找算法的评价 72
习题 72
第七章 排序 74
第一节 排序的有关概念和术语 74
第二节 选择排序 75
第三节 堆排序 78
第四节 起泡排序 81
第五节 插入排序的一般方法 84
第六节 移动最少和比较最少的插入排序 88
一、链表插入排序 88
二、折半插入 89
三、希尔分类 90
第七节 利用二叉树进行插入排序 92
第八节 快速分类 95
第九节 合并排序与外部排序 98
一、合并排序 98
二、外部排序 100
第十节 多关键字排序 101
一、低关键字优先排序 101
二、高关键字优先排序 103
习题 105
第八章 图 106
第一节 图的概念及术语 106
第二节 图的存储结构 107
一、多重表 107
二、邻接矩阵 107
三、关联矩阵 108
四、邻接表 109
五、十字链表 110
第三节 图的深度优先搜索 111
第四节 图的广度优先搜索 116
第五节 图的连通性 120
第六节 最短路问题 124
习题 128