第1章绪论1 1.1数据结构的概念1 1.1.1基本概念和术语1 1.1.2逻辑结构2 1.1.3存储结构5 1.1.4抽象数据类型6 1.2算法8 1.2.1算法的描述8 1.2.2算法设计的要求8 1.2.3算法分析8 1.3本章小结12 习题112 第2章线性表15 2.1线性表的抽象数据类型15 2.2线性表的顺序存储结构17 2.2.1顺序表的类型定义18 2.2.2线性表基本运算在顺序表上的实现18 2.2.3顺序表的应用举例21 2.3线性表的链式存储结构23 2.3.1单链表的类型定义23 2.3.2线性表基本运算在单链表上的实现25 2.3.3单链表的应用举例29 2.3.4单循环链表31 2.3.5双向链表32 2.4本章小结34 习题234算法与数据结构目录第3章栈37 3.1栈的抽象数据类型37 3.2栈的顺序存储结构39 3.2.1顺序栈的类型定义39 3.2.2栈基本运算在顺序栈上的实现40 3.2.3顺序栈的应用举例41 3.3栈的链式存储结构43 3.3.1链栈的类型定义43 3.3.2栈基本运算在链栈上的实现44 3.3.3链栈的应用举例45 3.4栈与递归的实现46 3.5本章小结49 习题349 第4章队列51 4.1队列的抽象数据类型51 4.2队列的顺序存储结构52 4.2.1循环队列的类型定义54 4.2.2队列基本运算在循环队列上的实现54 4.2.3循环队列的应用举例55 4.3队列的链式存储结构56 4.3.1链队列的类型定义57 4.3.2队列基本运算在链队列上的实现57 4.3.3链队列的应用举例59 4.4本章小结61 习题461 第5章数组和稀疏矩阵63 5.1数组的概念与表示63 5.1.1数组的概念63 5.1.2数组的顺序表示65 5.1.3特殊矩阵的压缩存储67 5.2稀疏矩阵68 5.2.1稀疏矩阵的三元组表示69 5.2.2稀疏矩阵的十字链表表示77 5.3本章小结79 习题579 第6章树和二叉树83 6.1树83 6.1.1树的抽象数据类型83 6.1.2树的基本术语86 6.1.3树的存储结构87 6.2二叉树90 6.2.1二叉树的抽象数据类型90 6.2.2二叉树的性质93 6.2.3二叉树的存储结构95 6.3二叉树的遍历97 6.3.1常用的二叉树遍历算法97 6.3.2遍历算法的应用举例105 6.4森林与二叉树的转换111 6.4.1森林转换为二叉树111 6.4.2二叉树转换为森林113 6.4.3树的遍历113 6.5哈夫曼树及其应用115 6.5.1哈夫曼树115 6.5.2哈夫曼算法115 6.5.3哈夫曼编码118 6.6本章小结120 习题6120 第7章图123 7.1图的基本概念123 7.1.1图的抽象数据类型123 7.1.2图的基本术语125 7.2图的存储结构127 7.2.1邻接矩阵127 7.2.2邻接表129 7.2.3应用举例131 7.3图的遍历133 7.3.1深度优先搜索134 7.3.2广度优先搜索135 7.3.3应用举例137 7.4*小生成树139 7.4.1Prim算法140 7.4.2Kruskal算法143 7.5拓扑排序145 7.6关键路径149 7.7*短路径154 7.7.1单源点*短路径154 7.7.2每对顶点之间的*短路径156 7.8本章小结158 习题7158 第8章查找161 8.1查找表161 8.2静态查找表162 8.2.1顺序查找162 8.2.2折半查找163 8.2.3分块查找165 8.3动态查找表165 8.3.1二叉排序树166 8.3.2平衡二叉树170 8.4散列表173 8.4.1散列函数的构��方法174 8.4.2散列冲突的解决方法175 8.5本章小结179 习题8179 第9章排序181 9.1排序的基本概念181 9.2插入排序182 9.2.1直接插入排序182 9.2.2希尔排序183 9.3交换排序185 9.3.1冒泡排序185 9.3.2快速排序186 9.4选择排序188 9.4.1直接选择排序188 9.4.2堆排序189 9.5归并排序191 9.6基数排序192 9.7本章小结195 习题9195 附录中英名词对照表197 参考文献201