第1章 绪论 1
数据结构的概念 1
基本概念和术语 1
数据结构的定义 2
数据的逻辑结构和存储结构 3
逻辑结构 3
存储结构 4
算法 4
算法的概念及描述 4
算法的评价标准 5
算法的时间复杂度 6
本章小结 8
习题一 9
实训1-1算法性能分析 10
第2章 线性表 13
线性表的概念及运算 13
线性表的定义 13
线性表的基本运算 14
线性表的顺序存储结构——顺序表 15
顺序存储结构的特点 15
顺序表的基本操作 16
顺序表的应用举例 18
线性表的链式存储结构——链表 20
线性表的链式存储结构表示 20
单链表的基本操作 21
单链表的应用举例 25
循环链表 27
双向链表 28
顺序表和链表的比较 31
本章小结 31
习题二 32
实训2-1顺序表的操作 33
实训2-2链表的操作 35
第3章 栈和队列 38
栈 38
栈的定义和基本操作 38
栈的顺序存储结构 39
栈的链式存储结构 42
栈与递归的实现 43
队列 46
队列的定义及基本操作 46
队列的顺序存储 47
队列的链式存储 52
本章小结 55
习题三 55
实训3-1栈的应用 56
实训3-2队列的应用 59
第4章 数组和矩阵 63
数组 63
数组的定义 63
数组的顺序表示和实现 64
特殊矩阵 65
三角矩阵 65
稀疏矩阵 66
本章小结 70
习题四 71
实训4-1建立稀疏矩阵的十字链表 71
第5章 串 76
串的定义及基本操作 76
串的存储结构 77
串的静态存储 77
串的动态存储 78
串的基本操作的实现 79
本章小结 84
习题五 84
实训5-1串的综合操作 85
第6章 树和二叉树 89
树的基本概念 89
树的定义 89
树的逻辑表示 90
树的基本术语 90
树的基本概念分析 91
树的存储结构和基本操作 92
树的存储结构 92
树的基本操作 95
二叉树的定义和基本性质 95
二叉树的定义 95
二叉树的基本性质 97
二叉树的存储结构和基本操作 98
顺序存储结构 98
链式存储结构 99
基本操作 101
二叉树的遍历 101
遍历概述 101
遍历算法 103
遍历算法的应用 104
树和森林与二叉树之间的关系 105
树转换成二叉树 105
森林转换成二叉树 106
二叉树还原成森林 107
树与森林的遍历 107
哈夫曼树及其应用 108
基本概念 108
哈夫曼树(最优二叉树) 109
哈夫曼编码 110
哈夫曼算法 112
本章小结 113
习题六 114
实训6-1树的存储结构 115
实训6-2二叉树的遍历及应用 118
实训6-3哈夫曼编码 123
第7章 图 126
图的基本概念 126
图的定义 126
图的基本术语 127
图的存储结构 129
邻接矩阵 130
邻接表 131
图的遍历 132
深度优先搜索 133
广度优先搜索 135
连通网的最小生成树 135
生成树及最小生成树的相关概念 135
最小生成树的构造方法 136
最短路径 139
最短路径的概念 139
求单源最短路径的方法 140
拓扑排序 141
本章小结 143
习题七 143
实训7-1图的创建与存储 145
实训7-2最小生成树 148
第8章 查找 151
查找的基本概念 151
基于线性表的查找法 152
顺序查找 152
折半查找 154
基于树的查找 157
二叉排序树的定义 157
二叉排序树上的操作 157
性能分析 162
计算式查找法——哈希法 162
哈希法 162
哈希函数的构造方法 163
处理冲突的方法 165
哈希法性能分析 167
本章小结 168
习题八 168
实训8-1分块查找 169
实训8-2二叉排序树的建立 171
第9章 排序 174
排序的基本概念 174
排序 174
稳定排序与不稳定排序 175
内部排序和外部排序 175
插入排序 176
直接插入排序 176
折半插入排序 178
希尔排序 178
交换排序 180
冒泡排序 180
快速排序 181
选择排序 184
直接选择排序 184
堆排序 185
归并排序 189
基数排序 190
排序算法 192
各种排序算法的比较 192
排序方法的选择 192
本章小结 193
习题九 193
实训9-1 内部排序算法时间复杂度分析 194
实训9-2 排序算法的应用 198
附录A 课程设计指导 204
附录B 部分习题参考答案 213