数据结构研究的是数据之间的关系,再进一步说,它研究的是多份数据之间的分布、排列和勾连的关系,以及在此基础之上如何进行高效的增删改查操作。
数据结构是计算机专业的基础课程,也是所有程序员的内功心法;不懂数据结构就是写代码的农民,了解数据结构才能成为行业专家。
六年创作,三次迭代,千般打磨,成就了现在这套精品的数据结构和算法教程。它有以下几个亮点:
- 通俗易懂,深入浅出,这是我们创作教程的招牌动作;
- 教程包含大量的练习题/小项目/小游戏,数量不少于 20 个;
- 教程包含 500+ 张优质图片,其中不少是 gif 动图;
- 不要伪代码,不要代码片段,我们直接提供了完整代码,复制到编译器一键运行。
为了降低阅读门槛,本教程所有代码都基于C语言编写。
教程版权展示
1、版权证书:
2、数字版权:
教程目录
想系统学习数据结构和算法的,下面提供了完整的教程目录,方便大家逐节阅读。
整套教程分为入门(不带 V 标识)和进阶(带 V 标识)两个部分,入门部分是免费的,看完就能入门数据结构;进阶部分是收费的(30元),看完能加深对数据结构的理解。
您可以选择点击下面的文章链接学习,也可以猛击这里到我的个人门户网站上学习,加我 q(834937624)可以领取付费教程的 PDF 电子版。
第01章 数据结构快速入门,数据结构基础详解… 1
1.1 数据结构是什么… 1
1.2数据的逻辑结构和存储结构… 2
V1.3数据结构到底学什么… 3
1.4 时间复杂度和空间复杂度… 6
V1.5 数据结构与算法的区别和联系… 9
V1.6 怎样才能学好数据结构… 10
V1.7 数学不好,对学数据结构有影响吗?… 12
V1.8 学好数据结构,你已然超越了99%的程序员!… 12
第02章 线性表详解:数据结构线性表10分钟入门… 14
2.1 线性表(线性存储结构)是什么… 14
2.2 顺序表(顺序存储结构)详解… 16
2.3 顺序表的基本操作(C语言详解版)… 18
V2.4 顺序表与数组的关系和区别… 24
2.5 链表(链式存储结构)完全攻略… 25
2.6 单链表的基本操作完全攻略… 30
V2.7 顺序表和链表的区别(优缺点)详解… 40
V2.8 如何实现单链表的反转?… 42
V2.9 如何判断两个单链表相交?… 51
V2.10 存储结构和存取结构,完全不是一码事!… 55
2.11 静态链表及其创建(C语言实现)… 56
2.12 静态链表的基本操作… 61
V2.13静态链表和动态链表区别… 70
2.14 双向链表及创建(C语言)详解… 72
2.15 双向链表基本操作(C语言实现)… 75
V2.16 双向链表实现贪吃蛇游戏… 84
2.17 循环链表(约瑟夫环)的建立及C语言实现… 88
V2.18 如何判断单链表为有环链表?… 91
V2.19 双向循环链表(C语言)详解… 94
V2.20 数据结构实践项目之俄罗斯轮盘赌小游戏… 97
第 03章 栈(Stack)和队列(Queue)详解… 101
3.1 什么是栈,栈存储结构详解… 101
3.2 顺序栈及基本操作(包含入栈和出栈)… 103
3.3 链栈基本操作(入栈和出栈)C语言详解… 107
V3.4 [数据结构实践项目]进制转换器… 110
V3.5 [数据结构实践项目]括号匹配算法(C语言实现)… 112
V3.6 如何用栈结构求表达式的值?… 114
3.7 什么是队列… 129
3.8 顺序队列详解(C语言实现)… 130
V3.9 循环队列完全攻略(C语言实现)… 134
3.10 链式队列… 139
V3.11 [数据结构实践项目]变态的停车场管理系统(微调)… 144
V3.12 [数据结构实践项目]扑克牌游戏(包含C语言实现代码)… 149
V3.13 栈和队列是线性结构(包含栈和队列的区别和共同点)… 151
第04章 字符串,数据结构中的串存储结构… 152
4.1 串是什么,串存储结构详解… 152
4.2 串的定长顺序存储结构(C语言)详解版… 154
4.3 串的堆分配存储结构… 155
4.4 串的块链存储结构… 157
4.5 BF算法(串模式匹配算法)C语言详解… 160
4.6 KMP快速模式匹配算法… 162
V4.7 KMP算法还能再优化!… 169
V4.8 为什么KMP算法的主串指针不用回退?… 173
V4.9 [数据结构实践项目]字符过滤系统… 175
第05章 数组和广义表详解… 180
5.1 什么是数组存储结构… 180
5.2 数组的顺序存储(C语言版)… 181
5.3 矩阵(稀疏矩阵)压缩存储(3种方式)… 187
5.4 三元组顺序表,稀疏矩阵的三元组表示及(C语言)实现… 190
5.5 行逻辑链接的顺序表(压缩存储稀疏矩阵)详解… 193
5.6 十字链表法,十字链表压缩存储稀疏矩阵详解… 196
5.7 矩阵(稀疏矩阵)的转置算法(C语言)详解… 201
V5.8 稀疏矩阵的快速转置算法(C语言)详解… 206
V5.9 行逻辑链接的顺序表实现矩阵乘法(附带C语言完整代码)… 209
V5.10 十字链表实现矩阵加法(附带C语言实现代码)… 216
5.11 什么是广义表… 225
5.12 广义表的存储结构详解(包含2种存储方案)… 226
V5.13 广义表的深度和长度(C语言)详解… 230
V5.14 广义表的复制详解(含C语言代码实现)… 240
第06章 数据结构树,树存储结构详解… 247
6.1 数据结构的树存储结构… 247
6.2 什么是二叉树… 250
6.3 二叉树的顺序存储结构(无师自通)… 252
6.4 二叉树的链式存储结构(C语言详解)… 256
V6.5 由浅入深讲二叉树4种遍历算法的由来… 259
6.6 二叉树先序遍历(递归与非递归)及C语言实现… 261
6.7 二叉树中序遍历(递归和非递归)算法C语言实现… 266
6.8 二叉树后序遍历(递归与非递归)算法C语言实现… 271
6.9 二叉树层次遍历(包含C语言实现代码)… 277
V6.10 线索二叉树… 281
V6.11 双向线索二叉树… 291
6.12 树的双亲表示法(包含C语言实现代码)… 301
6.13 树的孩子表示法(C语言详解版)… 305
6.14 树的孩子兄弟表示法… 309
V6.15 森林转化为二叉树(详解版)… 311
6.16 哈夫曼树(赫夫曼树、最优树)详解… 313
V6.17 哈夫曼编码(包含C语言实现代码)… 317
6.18 回溯算法详解… 324
V6.19 回溯算法解决八皇后问题(包含C语言实现代码)… 326
V6.20 n个结点最多可以构建多少棵树?… 329
V6.21 [数据结构实践项目]移动迷宫小游戏(初级版) 333
第07章 数据结构图,图存储结构详解… 338
7.1 数据结构的图存储结构… 338
7.2 什么是连通图,(强)连通图详解… 341
7.3 什么是生成树,生成树(生成森林)详解… 343
7.4 图的顺序存储结构(包含C语言实现)… 345
7.5 图的邻接表存储结构… 352
7.6 图的十字链表存储结构… 358
7.7 图的邻接多重表存储结构… 364
7.8 深度优先搜索(DFS)算法详解… 373
7.9 广度优先搜索(BFS)算法详解… 382
V7.10 深度优先生成树(森林)… 390
V7.11 广度优先生成树(森林)详解… 403
7.12 最小生成树是什么… 417
V7.13 Prim(普里姆)算法精讲… 419
V7.14 Kruskal算法(克鲁斯卡尔算法)详解… 428
V7.15 什么是重连通图… 436
V7.16 拓扑排序算法详解… 445
V7.17 关键路径完全攻略(C语言实现)… 452
7.18 什么是最短路径… 462
V7.19 Dijkstra算法(迪杰斯特拉算法)详解… 463
V7.20 Floyd算法(弗洛伊德算法)详解… 470
V7.21 [项目实践]移动迷宫小游戏(升级版) 477
第08章 数据结构查找表详解(包含常用查找算法)… 489
8.1 什么是查找表… 489
8.2 顺序查找算法(C语言实现)… 491
8.3 二分查找(折半查找)算法详解… 495
V8.4 分块查找算法图解(C语言实现)… 501
V8.5 静态树表查找算法详解… 506
8.6 二叉排序树(二叉查找树)详解… 513
8.7 平衡二叉树(AVL树)及C语言实现… 523
8.8 红黑树(更高级的二叉查找树)算法详解… 532
8.9 B-树及其基本操作(插入和删除)详解… 551
8.10 B+树及基本操作(插入和删除)详解… 558
8.11 键树查找法(双链树和字典树)及C语言实现… 564
8.12 哈希表(散列表)详解(包含哈希表处理冲突的方法)… 568
8.13 哈希查找算法(C语言实现)… 573
第09章 排序算法详解… 575
9.1插入排序算法及C语言实现… 576
9.2折半插入排序算法(C语言代码实现)… 579
V9.3 2路插入排序算法详解… 581
V9.4 表插入排序算法… 586
V9.5 希尔排序算法(缩小增量排序)及C语言实现… 590
9.6 冒泡排序(起泡排序)算法及其C语言实现… 593
9.7 快速排序(QSort,快排)算法及C语言实现… 596
9.8 简单选择排序算法(C语言详解版)… 601
9.9 树形选择排序(锦标赛排序)算法详解… 603
9.10 堆排序算法C语言详解… 606
V9.11 归并排序算法(包含C语言实现代码)… 612
V9.12 基数排序算法详解(C语言代码实现)… 614
V9.13 内部排序算法的优势分析… 620
第10章 动态内存管理(内存的分配与回收)详解… 621
V10.1 数据结构之动态内存管理机制… 622
V10.2 边界标识法管理动态内存… 625
V10.3 伙伴系统管理动态内存… 631
V10.4 无用单元收集(垃圾回收机制)… 634
V8.5 内存紧缩(内存碎片化处理)… 640
第11章 外部排序算法… 642
V11.1什么是外部排序算法… 642
V11.2多路平衡归并排序(胜者树、败者树)算法详解… 644
V11.3置换选择排序算法详解… 650
V11.4最佳归并树详解… 660