作者:解学武

数据结构与算法教程,数据结构C语言版教程!

数据结构与算法教程封面数据结构研究的是数据之间的关系,再进一步说,它研究的是数据之间分布、排列和勾连的关系。针对各种关系的数据,数据结构给出了对应的存储方案。

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

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

  • 通俗易懂,深入浅出,这是我创作教程的招牌动作;
  • 教程不仅讲解数据结构的知识点,还深度剖析了 20+ 个练习题/小项目/小游戏;
  • 教程包含 500+ 张优质图片,其中不少是 gif 动图;
  • 不要伪代码,不要代码片段,我直接提供了完整代码,复制到编译器一键运行。
  • 为了降低阅读门槛,本教程所有代码都基于 C 语言编写。

阅读本教程需要有 C 语言基础。版权:Version 1.0    Version 2.0

第1章 数据结构概述
1.什么是数据结构
2.数据结构到底学什么
3.数据的逻辑结构和物理结构
4.数据结构和算法的区别
5.时间复杂度和空间复杂度
6.数据结构如何自学,效率更高?
7.数学不好,对学数据结构有影响吗?
8.学好数据结构,你已然超越了99%的程序员!
第2章 线性表
1.线性表是什么
2.顺序表是什么
3.顺序表的基本操作
4.顺序表与数组根本不是一码事!
5.链表是什么
6.链表的基本操作
7.顺序表和链表有哪些不同?
8.删除链表倒数第N个结点(3种实现方案)
9.4种算法,实现单链表的反转!
10.如何判断两个单链表相交?
11.存储结构和存取结构,完全不是一码事!
12.静态链表是什么
13.静态链表的基本操作
14.静态链表和动态链表的区别
15.双向链表是什么
16.双向链表基本操作
17.双向链表实现贪吃蛇游戏(含源码)
18.循环链表实现约瑟夫环
19.双向循环链表是什么
20.如何判断链表中有环?
21.线性表实现俄罗斯轮盘赌游戏
第3章 栈和队列
1.栈是什么
2.顺序栈的基本操作
3.链栈的基本操作
4.递归实现栈的逆序(两种解决方案)
5.栈实现进制转换器
6.栈解决括号匹配问题
7.栈求表达式的值
8.队列是什么
9.顺序队列的基本操作
10.循环队列:更高级的顺序队列
11.链式队列的基本操作
12.队列实现停车场管理系统
13.队列实现“推小车”扑克牌游戏
14.用两个栈实现一个队列
15.用两个队列实现一个栈
16.为什么说栈和队列是线性存储结构?
第4章 字符串
1.串是什么
2.串的定长顺序存储结构
3.串的堆分配存储结构
4.串的块链存储结构
5.BF算法(串的模式匹配算法)
6.KMP算法(串的快速模式匹配算法)
7.KMP算法还能再优化!
8.死抠:为什么KMP算法的主串指针不用回退?
9.串实现字符过滤系统
第5章 数组和广义表
1.数组是什么
2.数组的顺序存储结构
3.矩阵(稀疏矩阵)压缩存储
4.三元组顺序表存储稀疏矩阵
5.行逻辑链接的顺序表存储稀疏矩阵
6.十字链表法存储稀疏矩阵
7.矩阵(稀疏矩阵)的转置算法
8.稀疏矩阵的快速转置算法
9.行逻辑链接的顺序表实现矩阵乘法(附带C语言完整代码)
10.十字链表实现矩阵加法(附带C语言实现代码)
11.广义表是什么
12.广义表的存储结构(2种)
13.广义表的深度和长度
14.广义表的复制(C语言实现)
第6章 树
1.树存储结构是什么
2.什么是二叉树
3.二叉树的顺序存储结构
4.二叉树的链式存储结构
5.浅谈二叉树的(4种)遍历算法
6.二叉树的先序遍历算法(递归和非递归)
7.二叉树的中序遍历算法(递归和非递归)
8.二叉树的后序遍历算法(递归和非递归)
9.二叉树的层次遍历
10.线索二叉树:遍历效率更高的二叉树
11.双向线索二叉树:更高级的线索二叉树
12.树的双亲表示法
13.树的孩子表示法
14.树的孩子兄弟表示法
15.孩子兄弟表示法将森林转变成二叉树
16.哈夫曼树(赫夫曼树、最优树)详解
17.哈夫曼编码(C语言实现)
18.回溯算法详解
19.回溯算法解决八皇后问题
20.回溯算法实现移动迷宫小游戏(初级版)
21.n个结点最多可以构建多少棵树?
第7章 图
1.图(图存储结构)是什么
2.什么是连通图
3.什么是生成树
4.图的顺序存储结构
5.图的邻接表存储结构
6.图的十字链表存储结构
7.图的邻接多重表存储结构
8.深度优先搜索(DFS)算法
9.广度优先搜索(BFS)算法
10.深度优先生成树和森林
11.广度优先生成树和森林
12.最小生成树是什么
13.Prim算法(普里姆算法)求最小生成树
14.Kruskal算法(克鲁斯卡尔算法)求最小生成树
15.重连通图是什么
16.拓扑排序算法(C语言实现)
17.AOE网求关键路径
18.最短路径是什么
19.Dijkstra算法(迪杰斯特拉算法)查找最短路径
20.Floyd算法(弗洛伊德算法)查找最短路径
21.最短路径算法实现移动迷宫游戏(升级版)
第8章 查找算法
1.查找表是什么
2.顺序查找算法
3.二分查找(折半查找)算法
4.分块查找算法(顺序查找算法的升级版)
5.静态树表查找算法
6.二叉排序树(二叉查找树)是什么
7.平衡二叉树(AVL树)是什么
8.红黑树算法(更高级的二叉查找树)
9.B-树及其基本操作
10.B+树及插入和删除操作
11.键树查找法(双链树和字典树)
12.什么是哈希表(散列表)
13.哈希查找算法
第9章 排序算法
1.插入排序算法
2.折半插入排序算法
3.2-路插入排序算法
4.表插入排序算法
5.希尔排序算法
6.冒泡排序算法
7.快速排序算法(QSort,快排)
8.选择排序算法
9.归并排序算法
10.基数排序
11.内部排序算法优势分析
第10章 外部排序算法
1.什么是外部排序算法
2.多路平衡归并排序算法
3.置换选择排序算法
4.最佳归并树
第11章 动态内存管理
1.动态内存管理
2.边界标识法
3.伙伴系统
4.系统垃圾回收机制
5.内存紧缩(内存碎片化处理)

添加微信咨询 扫码添加管理员微信 扫码添加管理员微信
微信ID:xiexuewu333