数据结构和算法教程(C语言版)

数据结构研究的是数据之间的关系,再进一步说,它研究的是多份数据之间的分布、排列和勾连的关系,以及在此基础之上如何进行高效的增删改查操作。

数据结构是计算机专业的基础课程,也是所有程序员的内功心法;不懂数据结构就是写代码的农民,了解数据结构才能成为行业专家。

六年创作,三次迭代,千般打磨,成就了现在这套精品的数据结构和算法教程。它有以下几个亮点:

  • 通俗易懂,深入浅出,这是我们创作教程的招牌动作;
  • 教程包含大量的练习题/小项目/小游戏,数量不少于 20 个;
  • 教程包含 500+ 张优质图片,其中不少是 gif 动图;
  • 不要伪代码,不要代码片段,我们直接提供了完整代码,复制到编译器一键运行。

为了降低阅读门槛,本教程所有代码都基于C语言编写。

教程目录

想系统学习数据结构和算法的,下面提供了完整的教程目录,方便大家逐节阅读。

您可以选择点击下面的文章链接学习,也可以点击这里进入我的个人网站,快速入门数据结构。数据结构和算法教程(C语言版)icon-default.png?t=N7T8https://xiexuewu.github.io/

第01章 数据结构快速入门,数据结构基础详解... 1
1.1 数据结构是什么... 1
1.2 数据的逻辑结构和存储结构... 2
1.3 数据结构到底学什么... 3
1.4 时间复杂度和空间复杂度... 6
1.5 数据结构与算法的区别和联系... 9
1.6 怎样才能学好数据结构... 10
1.7 数学不好,对学数据结构有影响吗?... 12
1.8 学好数据结构,你已然超越了99%的程序员!... 12
第02章 线性表详解:数据结构线性表10分钟入门... 14
2.1 线性表(线性存储结构)是什么... 14
2.2 顺序表(顺序存储结构)详解... 16
2.3 顺序表的基本操作(C语言详解版)... 18
2.4 顺序表与数组的关系和区别... 24
2.5 链表(链式存储结构)完全攻略... 25
2.6 单链表的基本操作完全攻略... 30
2.7 顺序表和链表的区别(优缺点)详解... 40
2.8 4种方法实现单链表的反转... 42
2.9 判断两个单链表相交的3种方法... 51
2.10 存储结构和存取结构,完全不是一码事!... 55
2.11 静态链表及其创建(C语言实现)... 56
2.12 静态链表的基本操作... 61
2.13静态链表和动态链表区别... 70
2.14 双向链表及创建(C语言)详解... 72
2.15 双向链表基本操作(C语言实现)... 75
2.16 双向链表实现贪吃蛇游戏... 84
2.17 循环链表(约瑟夫环)的建立及C语言实现... 88
2.18 如何判断单链表为有环链表?... 91
2.19 双向循环链表(C语言)详解... 94
2.20 数据结构实践项目之俄罗斯轮盘赌小游戏... 97
第 03章 栈(Stack)和队列(Queue)详解... 101
3.1 什么是栈,栈存储结构详解... 101
3.2 顺序栈及基本操作(包含入栈和出栈)... 103
3.3 链栈基本操作(入栈和出栈)C语言详解... 107
3.4 [数据结构实践项目]进制转换器... 110
3.5 [数据结构实践项目]括号匹配算法(C语言实现)... 112
3.6 如何用栈结构求表达式的值?... 114
3.7 什么是队列... 129
3.8 顺序队列详解(C语言实现)... 130
3.9 循环队列完全攻略(C语言实现)... 134
3.10 链式队列... 139
3.11 [数据结构实践项目]变态的停车场管理系统... 144
3.12 [数据结构实践项目]扑克牌游戏(包含C语言实现代码)... 149
3.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
4.7 KMP算法还能再优化!... 169
4.8 为什么KMP算法的主串指针不用回退?... 173
4.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
5.8 稀疏矩阵的快速转置算法(C语言)详解... 206
5.9 行逻辑链接的顺序表实现矩阵乘法(附带C语言完整代码)... 209
5.10 十字链表实现矩阵加法(附带C语言实现代码)... 216
5.11 什么是广义表... 225
5.12 广义表的存储结构详解(包含2种存储方案)... 226
5.13 广义表的深度和长度(C语言)详解... 230
5.14 广义表的复制详解(含C语言代码实现)... 240
第06章 数据结构树,树存储结构详解... 247
6.1 数据结构的树存储结构... 247
6.2 什么是二叉树... 250
6.3 二叉树的顺序存储结构(无师自通)... 252
6.4 二叉树的链式存储结构(C语言详解)... 256
6.5 由浅入深讲二叉树4种遍历算法的由来... 259
6.6 二叉树先序遍历(递归与非递归)及C语言实现... 261
6.7 二叉树中序遍历(递归和非递归)算法C语言实现... 266
6.8 二叉树后序遍历(递归与非递归)算法C语言实现... 271
6.9 二叉树层次遍历(包含C语言实现代码)... 277
6.10 线索二叉树... 281
6.11 双向线索二叉树... 291
6.12 树的双亲表示法(包含C语言实现代码)... 301
6.13 树的孩子表示法(C语言详解版)... 305
6.14 树的孩子兄弟表示法... 309
6.15 森林转化为二叉树(详解版)... 311
6.16 哈夫曼树(赫夫曼树、最优树)详解... 313
6.17 哈夫曼编码(包含C语言实现代码)... 317
6.18 回溯算法详解... 324
6.19 回溯算法解决八皇后问题(包含C语言实现代码)... 326
6.20 n个结点最多可以构建多少棵树?... 329
6.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
7.10 深度优先生成树(森林)... 390
7.11 广度优先生成树(森林)详解... 403
7.12 最小生成树是什么... 417
7.13 Prim(普里姆)算法精讲... 419
7.14 Kruskal算法(克鲁斯卡尔算法)详解... 428
7.15 什么是重连通图... 436
7.16 拓扑排序算法详解... 445
7.17 关键路径完全攻略(C语言实现)... 452
7.18 什么是最短路径... 462
7.19 Dijkstra算法(迪杰斯特拉算法)详解... 463
7.20 Floyd算法(弗洛伊德算法)详解... 470
7.21 [项目实践]移动迷宫小游戏(升级版) 477
第08章 数据结构查找表详解(包含常用查找算法)... 489
8.1 什么是查找表... 489
8.2 顺序查找算法(C语言实现)... 491
8.3 二分查找(折半查找)算法详解... 495
8.4 分块查找算法图解(C语言实现)... 501
8.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
9.3 2路插入排序算法详解... 581
9.4 表插入排序算法... 586
9.5 希尔排序算法(缩小增量排序)及C语言实现... 590
9.6 冒泡排序(起泡排序)算法及其C语言实现... 593
9.7 快速排序(QSort,快排)算法及C语言实现... 596
9.8 简单选择排序算法(C语言详解版)... 601
9.9 树形选择排序(锦标赛排序)算法详解... 603
9.10 堆排序算法C语言详解... 606
9.11 归并排序算法(包含C语言实现代码)... 612
9.12 基数排序算法详解(C语言代码实现)... 614
9.13 内部排序算法的优势分析... 620

教程版权展示

1、版权证书:

2、数字版权:

  • 25
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据结构和算法教程(C语言版)

创作不易,多多支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值