数据结构(c语言)(第六版)

数据结构(c语言)(第六版) 教材名称: 数据结构(c语言)(第六版)
ISBN号: 978-7-89535-430-2 作者: 刘振宇 周帅 张冬青
字数: 450千字 规格:
印制时间: 2025-02-01 出版日期: 2025-02-01
定价: 52 元 样章下载: 数据结构(C语言)(第六版).pdf
购买地址:

由于本教材侧重于数据结构和算法的实际应用,故适用于应用型本科或高职院校计算机及其相关专业的学生学习,不适合研究生、研究型本科院校及考研学生使用。
学习本教材需要具备C语言程序设计的基础。学习本教材后,读者能够掌握常用数据结构和一些初级算法的原理和实现方法,在进行真实项目开发中能够为特定的应用场景选取恰当的数据结构和算法。
本教材共分8章:第1章绪论、第2章线性表、第3章栈和队列、第4章树、第5章图、第6章排序、第7章查找以及第8章综合上机练习。上一版次中,第1至3章由刘振宇编写,第4章由邱建华编写,第5章由杨勇虎编写,第6至7章由张冬青编写,第8章由周帅编写。本轮改版中,对第4、5章内容进行了重新编写,对第1、2、3、6、7章内容进行修订,修订内容为:更正错误、增加案例以及融入思政元素。其中,第4章由李艺重新编写,第5章由周帅重新编写,第1、2章内容修订由王菊完成,第3章内容修订由王丝完成,第6章内容修订由徐祥远完成,第7章内容修订由姜苏完成。
由于时间仓促和编者水平有限,教材中难免存在不妥或疏漏之处,敬请广大读者和专家不吝赐教。作者邮箱:liuzhenyu@neusoft.edu.cn。
 
第1章绪论1
1.1数据、数据元素、数据项2
1.2什么是数据结构2
1.2.1数据的逻辑结构2
1.2.2数据的存储结构4
1.3算法4
1.4为什么要学习数据结构5
习题7
第2章线性表9
2.1线性表的基本定义10
2.2线性表的顺序表示和实现10
2.2.1顺序表的基本概念和特点11
2.2.2顺序表的实现12
2.3线性表的链式表示和实现19
2.3.1链表的基本概念19
2.3.2单向链表的实现20
2.3.3双向链表的实现31
2.4线性表的应用36
本章小结41
习题41
第3章栈和队列45
3.1栈的特点46
3.2栈的实现47
3.2.1顺序栈的实现47
3.2.2链式栈的实现49
3.3栈的应用53
3.3.1表达式求值53
3.3.2回溯法求解n皇后问题56
3.4队列的特点59
3.5队列的实现60
3.6队列的应用64
本章小结66
习题67
第4章树和二叉树71
4.1树的定义和基本术语72
4.1.1树的定义72
4.1.2树的基本术语72
4.2二叉树73
4.2.1二叉树的定义73
4.2.2二叉树的形态75
4.2.3二叉树的性质75
4.3树、森林向二叉树的转换76
4.3.1树向二叉树的转换76
4.3.2森林向二叉树的转换77
4.4二叉树和树的存储结构78
4.4.1二叉树的存储结构78
4.4.2树的存储结构79
4.5树与二叉树的遍历83
4.5.1二叉树的遍历83
4.5.2树的遍历85
4.5.3二叉树遍历的实现85
4.6哈夫曼树89
4.6.1哈夫曼树的基本概念89
4.6.2构造哈夫曼树91
4.6.3哈夫曼编码95
4.7并查集98
4.7.1并查集的主要操作98
4.7.2并查集的实现100
本章小结103
习题103
第5章图109
5.1基本概念110
5.2图的顺序存储112
5.2.1邻接矩阵112
5.2.2图的顺序存储实现114
5.3图的链式存储114
5.3.1图的邻接表存储114
5.3.2邻接表的基本代码117
5.4图的遍历118
5.4.1深度优先搜索遍历118
5.4.2广度优先搜索遍历119
5.4.3遍历测试代码121
5.5图的连通性122
5.5.1图的连通性122
5.5.2生成树和生成森林123
5.6最小生成树124
5.6.1克鲁斯卡尔(Kruskal)算法124
5.6.2普里姆(Prim)算法127
5.7最短路径131
5.7.1单源最短路径131
5.7.2多源最短路径135
5.8AOV网与拓扑排序138
5.8.1AOV网138
5.8.2拓扑排序140
5.9AOE网与关键路径143
5.9.1AOE网143
5.9.2关键路径144
本章小结146
习题148
第6章排序153
6.1基本概念154
6.2选择排序155
6.3冒泡排序与鸡尾酒排序158
6.3.1冒泡排序158
6.3.2鸡尾酒排序160
6.4插入排序163
6.5希尔排序166
6.6堆排序与优先队列169
6.6.1堆169
6.6.2堆排序173
6.6.3部分排序180
6.6.4优先队列181
6.7快速排序186
6.8归并排序192
6.9桶排序196
6.10基数排序198
6.11计数排序200
6.12排序算法的应用201
本章小结202
习题203
第7章查找208
7.1基本概念209
7.2相关概念209
7.3查找算法的度量210
7.4静态查找210
7.4.1顺序查找210
7.4.2折半查找与插值查找212
7.4.3分块查找217
7.5动态查找之平衡二叉树218
7.5.1二叉查找树218
7.5.2AVL树227
7.5.3红黑树237
7.6动态查找之B树241
7.6.1B树241
7.6.2B+树250
7.7动态查找之哈希253
7.7.1哈希的概念253
7.7.2哈希函数254
7.7.3冲突处理256
7.7.4哈希表的容量259
7.8动态查找之跳表261
7.9字典树264
本章小结267
习题268
第8章综合上机练习274
8.1八数码问题275
8.1.1问题建模275
8.1.2广度优先搜索求解八数码问题275
8.1.3A*算法简介279
8.1.4迭代加深的A*算法求解八数码问题281
8.2进一步学习建议284
习题285
本教材侧重数据结构和算法在实际工程项目中的应用,具备如下特点:
1.弱化公式推导和证明,强调数据结构和算法的实现;
2.使用C语言描述数据结构和算法,不使用伪代码,全教材代码可运行,便于读者上机练习;
3.在有限的篇幅内使代码尽可能地接近企业级,例如:在实现顺序表、链表、栈和队列等简单数据结构时尽量“封装”数据和操作(虽然这不是C语言的特点),在实现排序和查找算法时,代码模仿C++标准库(STL)编写;
4.相比传统数据结构教材以及本教材的上一个版本,本教材对跳表、平衡树、字典树等工程中常用的数据结构和算法进行了更为详细的介绍,同时去除了广义表、数组压缩和串等工程中不常用或者算法思想已被其他章节内容覆盖的内容;
5.为了便于读者通过C语言代码理解数据结构和算法,本教材中所有公式、图例中关于数据元素序号的部分,一律从0开始编号。