《数据结构》是计算机及相关专业的一门重要的专业基础课,同时也是软件专业必修的核心课程之一。数据结构是一门实用性很强的课程,因此本书在编写中注重精练内容,侧重实践应用。本书的理论介绍浅显易懂,避免抽象的理论论述和复杂的公式推导。书中的具体数据结构问题,大部分通过实例程序讲解,每章的最后还安排了项目实践部分,提升学习效果。本书主要介绍各种典型的数据结构,包括线性表、栈和队列、串、数组和广义表、树、图、查找和排序等。本书采用Java语言描述数据结构和算法。
第1章绪论1
1.1数据结构简介1
1.2基本术语3
1.3数据的逻辑结构4
1.4数据的存储结构6
1.5算法及算法分析6
1.5.1算法6
1.5.2算法效率分析7
习题一11
第2章线性表13
2.1线性表的定义与运算13
2.2线性表的顺序存储结构15
2.2.1顺序表15
2.2.2顺序表上基本操作的实现17
2.3线性表的链式存储结构21
2.3.1线性单链表21
2.3.2循环链表29
2.3.3双向链表30
2.4线性表项目实践32
习题二37
第3章栈和队列39
3.1栈39
3.1.1栈的定义和运算39
3.1.2栈的存储和实现41
3.2队列46
3.2.1队列的定义和运算46
3.2.2队列的顺序存储结构48
3.2.3队列的链式存储结构51
3.3栈和队列的项目实践54
习题三60
第4章串62
4.1串的基本概念和存储结构62
4.1.1串的基本概念62
4.1.2串的存储结构64
4.2串基本运算的实现64
4.3模式匹配69
4.4串项目实践72
习题四74
第5章数组和广义表76
5.1数组的定义和运算76
5.2数组顺序存储结构77
5.3矩阵的压缩存储78
5.3.1特殊矩阵79
5.3.2稀疏矩阵81
5.4广义表91
5.4.1广义表的定义91
5.4.2广义表的存储结构94
5.5数组项目实践94
习题五96
第6章树与二叉树98
6.1树的定义和基本术语98
6.2二叉树99
6.2.1二叉树的定义100
6.2.2二叉树的性质101
6.2.3二叉树的存储结构及实现102
6.3遍历二叉树和线索二叉树106
6.3.1遍历二叉树106
6.3.2线索二叉树107
6.4树和森林108
6.4.1树的存储结构108
6.4.2森林与二叉树的转换110
6.4.3树和森林的遍历113
6.5哈夫曼树及其应用114
6.5.1哈夫曼树114
6.5.2哈夫曼编码116
6.6树项目实践116
习题六126
第7章图128
7.1图的定义和基本术语128
7.1.1图的定义128
7.1.2图的基本术语128
7.2图的存储结构130
7.2.1邻接矩阵存储130
7.2.2邻接表存储131
7.3图的遍历133
7.3.1深度优先遍历133
7.3.2广度优先遍历136
7.4图的最小生成树140
7.4.1生成树140
7.4.2最小生成树140
7.4.3普里姆算法140
7.5最短路径143
7.6图的项目实践145
习题七149
第8章查找150
8.1查找的基本概念150
8.2基于线性表的查找151
8.2.1顺序查找151
8.2.2折半查找154
8.2.3分块查找158
8.3基于树的查找161
8.3.1二叉排序树161
8.3.2平衡二叉树169
8.3.3B树170
8.4哈希表171
8.4.1哈希表的概念171
8.4.2哈希函数的构造方法172
8.4.3处理冲突的方法173
8.4.4哈希表的查找分析175
8.5查找项目实践176
习题八180
第9章排序181
9.1概述181
9.2插入排序181
9.2.1直接插入排序181
9.2.2折半插入排序183
9.2.3希尔排序185
9.3交换排序187
9.3.1冒泡排序187
9.3.2快速排序189
9.4选择排序191
9.4.1简单选择排序191
9.4.2堆排序193
9.5归并排序197
9.6基数排序198
9.6.1多关键字排序198
9.6.2基数排序199
9.7各种内部排序算法的比较201
9.7.1几种常用排序算法的比较201
9.7.2排序算法的选择201
9.8外排序202
9.9排序项目实践202
习题九208
参考文献209
本书是为《数据结构》课程编写的教材,主要讨论数据的各种逻辑结构和数据在计算机中的存储表示,以及各种非数值运算的算法实现,通过本课程的学习,学生能熟练掌握典型数据结构及其运算的实现和性能特点,并能对给定的实际问题,建立准确的问题模型,设计有效的问题求解方法,选择合理的数据结构及其运算集,设计有效的算法,从而提高软件设计水平,为后续课程的学习打下良好基础。本书适用于计算机相关专业本、专科《数据结构》课程的教学,也可以作为高等院校非计算机专业学生的选修课教材和计算机应用技术人员的自学参考书。书后附有习题,便于读者理解与掌握。