目录 第1章概述1 1.1数据结构的发展1 1.2数据结构的基本概念2 1.3算法与算法分析5 习题1 10 第2章线性表13 2.1线性表的定义和基本操作13 2.1.1线性表的定义13 2.1.2线性表的基本操作14 2.2顺序表15 2.2.1顺序表的定义15 2.2.2顺序表基本操作的实现16 2.3链表19 2.3.1单链表表示及实现20 2.3.2双链表表示及实现28 2.3.3循环链表表示及实现32 2.3.4静态链表表示及实现40 习题245 第3章特殊线性表49 3.1栈49 3.1.1栈的定义和基本操作49 3.1.2顺序栈表示及实现50 3.1.3链栈表示及实现55 3.2队列58 3.2.1队列的定义和基本操作58 3.2.2顺序队列表示及实现59 3.2.3链队列表示及实现64 3.3串66 3.3.1串的定义和基本操作66 3.3.2顺序串表示及实现68 3.3.3链串表示及实现73 3.3.4串的模式匹配79 习题385 第4章数组和广义表89 4.1数组89 4.1.1数组的定义和基本操作89 4.1.2数组的存储结构90 4.1.3矩阵的压缩存储91 4.2广义表105 4.2.1广义表的定义和基本操作105 4.2.2广义表的存储机构106 习题4 112 第5章树和二叉树115 5.1树的定义和基本操作115 5.1.1树的定义和基本术语115 5.1.2树的基本操作116 5.2二叉树117 5.2.1二叉树的定义和基本操作117 5.2.2二叉树的性质118 5.2.3二叉树的遍历121 5.2.4二叉树的顺序存储结构122 5.2.5二叉树的链式存储结构127 5.2.6二叉树的非递归遍历133 5.2.7线索二叉树135 5.3树和森林140 5.3.1树的存储结构140 5.3.2树、森林与二叉树之间的转换144 5.3.3树和森林的遍历146 5.4赫夫曼树及其应用147 5.4.1赫夫曼树147 5.4.2赫夫曼编码150 习题5153 第6章图157 6.1图的定义和基本操作157 6.1.1图的定义和基本术语157 6.1.2图的基本操作160 6.2图的遍历160 6.2.1深度优先搜索及其生成树161 6.2.2广度优先搜索及其生成树161 6.3图的存储162 6.3.1邻接矩阵162 6.3.2邻接表与逆邻接表165 6.3.3十字链表169 6.3.4邻接多重表170 6.4最小生成树171 6.4.1Kruskal算法172 6.4.2Prim算法173 6.5图的应用175 6.5.1拓扑排序175 6.5.2关键路径177 6.5.3最短路径180 习题6182 第7章查找185 7.1查找的基本概念185 7.2静态查找表186 7.2.1顺序查找187 7.2.2二分查找189 7.2.3分块查找192 7.3动态查找表194 7.3.1二叉排序树194 7.3.2平衡二叉树201 7.3.3B树与B+树207 7.4散列表209 7.4.1散列表的定义209 7.4.2散列函数的构造方法210 7.4.3处理冲突的方法212 7.4.4散列表的查找与性能分析218 习题7219 第8章内部排序223 8.1排序的基本概念223 8.2插入排序226 8.2.1直接插入排序226 8.2.2折半插入排序227 8.2.32路插入排序228 8.2.4希尔排序230 8.2.5表插入排序232 8.3交换排序235 8.3.1起泡排序235 8.3.2快速排序237 8.4选择排序238 8.4.1简单选择排序238 8.4.2树形选择排序240 8.4.3堆排序243 8.5归并排序246 8.6计数排序249 8.7基数排序250 8.7.1多关键字排序250 8.7.2链式基数排序251 8.8各种排序方法的综合比较253 习题8254 第9章外部排序257 9.1外存储器简介257 9.2外部排序方法258 9.3多路平衡归并260 9.4置换选择排序261 9.5最佳归并树263 习题9 265 参考文献266