数据结构和算法的学习笔记 仅供参考, 持续更新 目录 1. 数据结构概述 2. 线性结构 2.1. 稀疏数组 2.2. 队列 2.2.1. 线形队列 2.2.2. 环形队列 2.3. 链表 2.3.1. 单向链表 2.3.2. 双向链表 2.3.3. 单向环形链表 2.4. 栈 2.4.1. 栈的基本原理 2.4.2. 栈实现计算器 3. 递归 3.1. 递归的原理 3.2. 递归解决数学问题 4. 排序算法 4.1. 排序算法的时间复杂度 4.2. 排序算法的分类 4.3. 冒泡排序 4.4. 选择排序 4.5. 插入排序 4.6. 希尔排序 4.7. 快速排序 4.8. 归并排序 4.9. 桶排序 4.10. 基数排序 5. 查找算法 5.1. 线性查找 5.2. 二分查找 5.3. 插值查找 5.4. 斐波那契查找 6. 哈希表(散列) 7. 树形结构 7.1. 二叉树 7.1.1. 二叉树的基本原理 7.1.2. 顺序存储二叉树 7.1.3. 堆排序 7.1.4. 哈夫曼树及其应用 7.1.5. 二叉排序树 7.1.6. 平衡二叉树 7.2. 多叉树 8. 图论算法 8.1. 图的遍历 8.2. 图相关算法的应用 9. 常用的算法 1. 数据结构概述 001.线性结构和非线性结构 2. 线性结构 2.1. 稀疏数组 002.稀疏数组的原理和代码实现 2.2. 队列 2.2.1. 线形队列 003.线形队列的原理和代码实现 2.2.2. 环形队列 004.环形队列的原理和代码实现 2.3. 链表 2.3.1. 单向链表 005.单链表的原理和代码实现 006.单链表面试题 2.3.2. 双向链表 007.双向链表的原理和代码实现 2.3.3. 单向环形链表 008.单向环形链表和约瑟夫问题 2.4. 栈 2.4.1. 栈的基本原理 009.栈的原理和代码实现 2.4.2. 栈实现计算器 010.栈实现综合计算器 011.前缀中缀后缀表达式规则 012.逆波兰计算器实现 013.中缀转后缀表达式思路分析和代码实现 3. 递归 3.1. 递归的原理 014.递归的应用和说明 3.2. 递归解决数学问题 015.迷宫回溯问题分析和实现 016.八皇后问题分析和代码实现 4. 排序算法 4.1. 排序算法的时间复杂度 018.时间频度介绍和特点 019.时间复杂度计算和举例说明 020.平均时间复杂度和最坏时间复杂度 029.排序算法时间复杂度比较 4.2. 排序算法的分类 017.排序算法介绍和分类 4.3. 冒泡排序 021.冒泡排序思路分析和代码实现 4.4. 选择排序 022.选择排序算法思路分析和代码实现 4.5. 插入排序 023.插入排序思路分析和代码实现 4.6. 希尔排序 024.希尔排序思路分析和代码实现 4.7. 快速排序 025.快速排序思路分析和代码实现 4.8. 归并排序 026.归并排序思路分析和代码实现 4.9. 桶排序 027.桶排序思路及实现 4.10. 基数排序 028.基数排序思路分析和代码实现 5. 查找算法 5.1. 线性查找 030.线性查找分析和实现 5.2. 二分查找 031.二分查找思路和实现和优化 051.二分查找非递归算法的原理和实现 5.3. 插值查找 032.插值查找的原理和实现 5.4. 斐波那契查找 033.斐波那契查找的原理和实现 6. 哈希表(散列) 034.哈希表的分析和实现 7. 树形结构 7.1. 二叉树 7.1.1. 二叉树的基本原理 035.二叉树的存储和定义 036.二叉树的创建和结点遍历 037.二叉树的结点查找和结点删除 7.1.2. 顺序存储二叉树 038.顺序存储二叉树的原理和实现 039.线索化二叉树的原理和实现 7.1.3. 堆排序 040.堆排序的概念和实现 7.1.4. 哈夫曼树及其应用 041.哈夫曼树的概念和实现 042.哈夫曼编码的原理和实现 043.哈夫曼编码应用于压缩文件 7.1.5. 二叉排序树 044.二叉排序树的原理和实现 7.1.6. 平衡二叉树 045.平衡二叉树的原理和实现 7.2. 多叉树 046.多叉树的原理概述 8. 图论算法 8.1. 图的遍历 047.图的概念和实现 048.图的深度优先算法原理和实现 049.图的广度优先算法原理和实现 050.图的深度优先和广度优先算法的总结 8.2. 图相关算法的应用 056.贪心算法的原理以及解决集合覆盖问题 057.普里姆(Prim)算法的原理以及解决最小生成树问题 058.克鲁斯卡尔(Kruskal)算法的原理以及解决最小生成树问题 059.迪杰斯特拉(Dijkstra)算法的原理以及解决最短路径问题 060.弗洛伊德(Floyd)算法的原理以及解决最短路径问题 061.马踏棋盘算法的原理和实现方案 9. 常用的算法 052.分治算法的设计模式以及解决汉诺塔问题 053.动态规划算法的原理以及解决背包问题 054.暴力匹配算法的原理以及解决字符串匹配问题 055.KMP算法的原理以及解决字符串匹配问题 062.多数投票算法的原理和实现