数据结构与算法教程,数据结构C语言版教程!
本套数据结构与算法教程,不仅讲解了基本的数据存储结构,还讲解了经典的算法,并把它们付诸实践,解决生活中的实际问题,例如停车场管理系统、迷宫游戏、字符过滤系统等。
这套数据结构教程,最大的特点是通俗易懂,深入浅出,摒弃教条主义,不做“学院派”,以“生动有趣”的笔风来讲解每个知识点,更配有完整的 C 语言实现代码供初学者参考。
数据结构是程序设计的重要理论基础,不管你从事什么方向的软件开发,一定会用到它。
- 第1章 数据结构入门
- 1.什么是数据结构
- 2.数据结构到底学什么?
- 3.逻辑结构和存储结构(物理结构)
- 4.如何衡量一个算法的好坏?
- 5.数据结构和算法的关系和区别
- 6.数据结构如何自学,效率更高?
- 7.数学不好,对学数据结构有影响吗?
- 8.学好数据结构,你已然超越了99%的程序员!
- 第2章 线性表
- 1.什么是线性表
- 2.顺序表(顺序存储结构)
- 3.顺序表的基本操作
- 4.单链表(链式存储结构)
- 5.单链表的基本操作
- 6.顺序表和链表的优缺点
- 7.4种算法,实现单链表的反转!
- 8.如何判断两个单链表相交?
- 9.存储结构和存取结构,完全不是一码事!
- 10.静态链表
- 11.静态链表基本操作
- 12.静态链表和动态链表的区别
- 13.双向链表
- 14.双向链表基本操作
- 15.双向链表实现贪吃蛇游戏(含源码)
- 16.循环链表实现约瑟夫环
- 17.如何判断单链表为有环链表?
- 18.双向循环链表
- 19.[项目实践]俄罗斯轮盘赌小游戏
- 第3章 栈和队列
- 1.什么是栈
- 2.顺序栈及基本操作
- 3.链栈及基本操作
- 4.[项目实践]进制转换器
- 5.[项目实践]括号匹配
- 6.如何用栈结构求表达式的值?
- 7.什么是队列
- 8.顺序队列及实现
- 9.链式队列及基本操作
- 10.[项目实践]变态的停车场管理系统
- 11.[项目实践]扑克牌小游戏
- 12.栈和队列是线性结构
- 第4章 字符串
- 1.串是什么
- 2.串的定长顺序存储
- 3.串的堆分配存储结构
- 4.串的块链存储结构
- 5.BF算法(串模式匹配算法)
- 6.KMP算法(快速模式匹配算法)
- 7.[项目实践]字符过滤系统
- 第5章 数组和广义表
- 1.什么是数组存储结构
- 2.数组的顺序存储
- 3.矩阵的压缩存储
- 4.三元组顺序表
- 5.行逻辑链接的顺序表
- 6.十字链表法
- 7.矩阵的转置算法
- 8.稀疏矩阵的快速转置
- 9.行逻辑链接的顺序表实现矩阵乘法
- 10.十字链表实现矩阵加法
- 11.什么是广义表
- 12.广义表的存储结构
- 13.广义表的深度和长度
- 14.广义表的复制
- 第6章 树存储结构
- 1.数据结构的树存储结构
- 2.什么是二叉树
- 3.二叉树的顺序存储结构
- 4.二叉树的链式存储结构
- 5.由浅入深讲二叉树4种遍历算法的由来
- 6.二叉树先序遍历(递归与非递归)
- 7.二叉树中序遍历(递归和非递归)
- 8.二叉树后序遍历(递归与非递归)
- 9.二叉树层次遍历
- 10.线索二叉树
- 11.双向线索二叉树
- 12.树的双亲表示法
- 13.树的孩子表示法
- 14.树的孩子兄弟表示法
- 15.森林转化为二叉树
- 16.哈夫曼树(赫夫曼树、最优树)
- 17.哈夫曼编码
- 18.回溯算法
- 19.回溯算法解决八皇后问题
- 20.n个结点的二叉树种类
- 21.[项目实践]移动迷宫小游戏(初级版)
- 第7章 图存储结构
- 1.数据结构的图存储结构
- 2.什么是连通图
- 3.什么是生成树(生成森林)
- 4.图的顺序存储结构
- 5.图的邻接表存储结构
- 6.图的十字链表存储结构
- 7.图的邻接多重表存储结构
- 8.深度优先搜索和广度优先搜索
- 9.深度优先生成树和广度优先生成树
- 10.普里姆算法(Prim算法)
- 11.克鲁斯卡尔算法(Kruskal算法)
- 12.重连通图及重连通分量
- 13.拓扑排序算法
- 14.AOE网求关键路径
- 15.迪杰斯特拉算法
- 16.弗洛伊德算法
- 17.[项目实践]移动迷宫小游戏(升级版)
- 第8章 动态内存管理
- 1.动态内存管理机制
- 2.边界标识法
- 3.伙伴系统管理动态内存
- 4.系统垃圾回收机制
- 5.内存紧缩(内存碎片化处理)
- 第9章 查找表结构
- 1.什么是查找表
- 2.顺序查找算法
- 3.二分查找(折半查找)算法
- 4.分块查找(索引顺序查找)算法
- 5.静态树表查找算法
- 6.二叉排序树(二叉查找树)
- 7.平衡二叉树(AVL树)
- 8.红黑树(更高级的二叉查找树)算法
- 9.B-树及其基本操作(插入和删除)
- 10.B+树及基本操作(插入和删除)
- 11.键树查找法(双链树和字典树)
- 12.什么是哈希表(散列表)
- 13.哈希查找算法
- 第10章 排序算法
- 1.插入排序算法
- 2.折半插入排序算法
- 3.2路插入排序算法
- 4.表插入排序算法
- 5.希尔排序算法(缩小增量排序)
- 6.冒泡排序算法
- 7.快速排序算法(QSort,快排)
- 8.简单选择排序算法
- 9.树形选择排序(锦标赛排序)算法
- 10.堆排序算法
- 11.归并排序算法
- 12.基数排序算法
- 13.内部排序算法的优势分析