全书共8章。第1章介绍了数据结构和算法的基本概念;第2~4章介绍了线性表、堆栈、队列、串、数组等常用的线性结构;第5、6章介绍了非线性结构、树形结构和图状结构;第7、8章介绍了两种基本技术:查找和排序的常用算法。附录A介绍了实训的相关知识,包括实训的步骤、实训报告规范和实训的环境。本书对每一种数据结构都详细阐述了基本概念、各种不同的存储结构以及在不同存储结构上的主要算法的实现,并给出丰富的典型例题,以帮助读者理解。
第1章 概论t1
1.1 引言t1
1.1.1 什么是数据结构t1
1.1.2 数据结构研究什么t1
1.2 数据结构的基本概念t3
1.3 算法和算法的分析t4
1.3.1 算法及算法的描述t4
1.3.2 算法设计的要求t4
1.3.3 算法的分析t5
1.4 总结与提高t7
习题t8
第2章 线性表t11
2.1 线性表的定义及运算t11
2.1.1 线性表的定义t11
2.1.2 线性表的基本运算t11
2.2 线性表的顺序存储结构t12
2.2.1 顺序表t12
2.2.2 顺序表上基本运算的实现t13
2.3 线性表的链式存储结构t16
2.3.1 单链表及其基本运算t16
2.3.2 循环链表t20
2.4 顺序表与链表的比较t21
2.5 典型题例t22
2.6 实训例题t24
2.6.1 实训例题1:有序顺序表的建立及查找t24
2.6.2 实训例题2:多项式的表示和相加t27
2.7 总结与提高t31
2.7.1 主要知识点t31
2.7.2 提高题例t32
习题t33
实训习题t35
第3章 堆栈和队列t36
3.1 堆栈t36
3.1.1 堆栈的定义及基本运算t36
3.1.2 堆栈的顺序存储结构t36
3.1.3 堆栈的链式存储结构t39
3.2 栈典型题例t42
3.3 队列t43
3.3.1 队列的定义及运算t43
3.3.2 队列的顺序存储结构t44
3.3.3 队列的链式存储结构t46
3.4 队列典型题例t48
3.5 实训例题t50
3.5.1 实训例题1:顺序循环队列的操作t50
3.5.2 实训例题2:括号配对t52
3.6 总结与提高t56
3.6.1 主要知识点t56
3.6.2 提高题例t56
习题t58
实训习题t60
第4章 串与数组t62
4.1 串及其基本运算t62
4.1.1 串的基本概念t62
4.1.2 串的基本运算t63
4.2 串的存储结构t64
4.2.1 串的顺序存储t64
4.2.2 串的堆存储结构t66
4.2.3 串的链式存储t67
4.3 数组t68
4.3.1 数组的定义t68
4.3.2 一维数组、二维数组和多维数组t69
4.4 典型题例t70
4.5 实训例题t71
4.5.1 实训例题1:字符串操作t71
4.5.2 实训例题2:二维数组t74
4.6 总结与提高t76
4.6.1 主要知识点t76
4.6.2 提高题例t77
习题t79
实训习题t81
第5章 树和二叉树t82
5.1 树t82
5.1.1 树的基本概念t82
5.1.2 树的基本操作t84
5.1.3 树的存储结构t85
5.2 二叉树t88
5.2.1 二叉树的定义及基本操作t88
5.2.2 二叉树的性质t89
5.2.3 二叉树的存储结构t91
5.3 遍历二叉树t93
5.3.1 二叉树的遍历方法t93
5.3.2 二叉树遍历算法应用典型例题t102
5.4 树和二叉树的关系t104
5.4.1 树转换为二叉树t104
5.4.2 树的遍历t105
5.5 哈夫曼树及其应用t106
5.5.1 哈夫曼树的定义及构造t106
5.5.2 哈夫曼树的应用t109
5.6 典型题例t111
5.7 实训例题t113
5.7.1 实训例题1:根据顺序存储建立二叉链表,并对二叉树进行先序、中序、后序遍历t113
5.7.2 实训例题2:设计哈夫曼编码t116
5.8 总结与提高t121
5.8.1 主要知识点t121
5.8.2 提高题例t122
习题t124
实训习题t126
第6章 图t127
6.1 图的定义和术语t127
6.1.1 图的定义t127
6.1.2 图的基本术语t127
6.1.3 图的基本操作t129
6.2 图的存储结构t130
6.2.1 邻接矩阵t130
6.2.2 邻接表t132
6.2.3 邻接矩阵和邻接表的比较t135
6.3 图的遍历t135
6.3.1 连通图的深度优先搜索t13