数据结构
文章平均质量分 78
白胡子是这个世界上最猛的男人
一个Python 小白 每天进步一点点
展开
-
图的几个应用
文章目录前言一、最小生成树的两个算法(Prim & Kruskal)1. 关于Prim2.关于Kruskal二、关于最短路径的两个算法(Dijkstra & Floyd)1.关于Dijkstra2.关于Floyd3.拓扑排序前言一、最小生成树的两个算法(Prim & Kruskal)1. 关于Prim思路:开始时随机选择一个顶点,之后选择一个与当前T顶点集合最近的顶点直至所有顶点都并入树适用于解边稠密的图生成树不唯一2.关于Kruskal每次操作选择权值最小且原创 2021-09-20 10:08:42 · 412 阅读 · 0 评论 -
图的基本概念和几个术语
系列文章目录文章目录系列文章目录一、图的定义有向图 & 无向图完全图的相关无向图的连通、连通图及连通分量 & 有向图的强连通、强连通图、强连通分量二 关于连通图、强连通图和完全图的问题三、关于生成树、生成森林问题四、 关于知道度求顶点个数有关子图一、图的定义由顶点集V和边集E组成,记为G = (V,E)|V| 和 |E| 分别表示顶点个数和边的条数有向图 & 无向图E是有向边(也叫做弧,记为<v,w>)的有限集合,原创 2021-09-16 15:19:56 · 487 阅读 · 0 评论 -
树和二叉树概念及常见题型总结<选择>
文章目录一、树的四个性质关于度为m树 和 m叉树的二、二叉树的相关特殊二叉树满二叉树完全二叉树二叉排序树平衡二叉树二叉树性质三、 结点个数问题1.已知各个度的结点个数,求它的叶结点个数经典例题关于完全二叉树求它的结点个数例题类型1:已知总结点个数求叶结点例题类型2:已知叶结点个数求它的总个数例题类型3:通过告知第几层有几个叶子结点来求完全二叉树的最多结点个数四、二叉树的几个遍历几种特别的先序序列与中序序列相同先序序列与后续序列相反先序序列与后续序列相同线索二叉树相关几种需要三叉链表才能求的树、森林、二叉树原创 2021-09-15 19:27:24 · 1744 阅读 · 0 评论 -
平衡二叉树及它的翻转问题
文章目录一、平衡二叉树的定义二、翻转问题1.LL翻转2.RR翻转3.LR翻转4.RL翻转一、平衡二叉树的定义左子树和右子树高度差的绝对值不超过1二、翻转问题1.LL翻转2.RR翻转3.LR翻转4.RL翻转原创 2021-09-15 16:08:12 · 2017 阅读 · 2 评论 -
二叉树遍历和线索二叉树大题复习(王道教材)(上)
文章目录一、编写后序遍历二叉树的非递归算法1.1 思路1.2总程序二、试给出二叉树的自下而上,从右到左的层次遍历算法2.1思路2.2总程序三、假设二叉树采用二叉链表存储结构,设计一个非递归算法求二叉树的高度二叉链表存储结构表示3.1 思路3.2总程序四、设一棵二叉树中各结点的值互不相同,其先序遍历序列和中序遍历序列分别存于两个一维数组A[1...N]和B[1....N]中,试编写算法建立该二叉树的二叉链表4.1思路4.2总程序五、二叉树按二叉链表形式存储,写一个判别给定二叉树是否是完全二叉树的算法5.1思路原创 2021-09-14 17:44:45 · 1034 阅读 · 0 评论 -
串的模式匹配算法总结(朴素模式匹配及求next数组)
系列文章目录文章目录系列文章目录一、朴素模式匹配(代码及图示)二、KMP算法求NEXT数组1.求next数组2.匹配三、改进KMP算法(nextval数组求法)一、朴素模式匹配(代码及图示)#define MaxLEN 255typedef struct{ char ch[MaxSize]; int length}SString;int Index(SString S, SString T){ int i = 1 , j = 1; while( i &l原创 2021-09-11 12:10:28 · 908 阅读 · 0 评论 -
栈和队列应用总结及特殊矩阵的压缩存储
文章目录一、栈在括号匹配中的作用二、栈在表达式求值中的应用1.将中缀表达式转变为后缀表达式(手算)2.将中缀表达式转变为前缀表达式(手算)3.将中缀表达式转后缀表达式(机算)4.中缀表达式的计算(用栈实现)三、栈在递归应用的问题四、队列在层次遍历中的应用五、队列在操作系统中的应用六、错题五、矩阵压缩问题(求压缩矩阵的数组下标)1.对称矩阵1.下三角按行存放2.下三角按列存放3.上三角按行存放4.上三角按列存放2.三对角矩阵3.稀疏矩阵一、栈在括号匹配中的作用遇到左括号压入栈中,遇到右括号出栈进行比原创 2021-09-10 17:32:37 · 357 阅读 · 0 评论 -
栈和队列总结
文章目录一、栈1.1栈的基本概念1.1.1栈的定义1.1.2栈的结构1.1.3出栈顺序的排列组合数问题1.2栈的顺序存储结构1.2.1顺序栈实现1.2.2栈顶指针指向不同入栈出栈问题(图示)1.2.3栈空、栈满判断(top指向 -1情况)1.2.4 顺序栈基本操作实现(C++代码)1.2.4.1初始化1.2.4.2判断栈空1.2.4.3进栈1.2.4.4出栈1.2.4.5读栈顶元素1.2.5共享栈问题1.3栈的链式存储结构1.4 栈错题总结 一、栈1.1栈的基本概念1.1.1栈的定义栈的逻辑结构是原创 2021-09-09 16:44:13 · 528 阅读 · 0 评论 -
线性表总结
文章目录一、线性表的定义三、线性表的顺序表示(顺序表)3.1顺序表存储类型3.2顺序表的插入操作总结一、线性表的定义线性表是具有相同数据类型的n个数据元素的有限序列。其中第一个元素称为表头元素,最后一个元素称为表尾元素。除表头元素外,每个元素都有自己的直接前驱。除表尾元素外,每个元素都有自己的直接后继。# 二、线性表的特点元素个数有限逻辑上具有顺序元素都是数据元素每个元素数据类型相同,意味着占有相同大小的存储空间具有抽象性三、线性表的顺序表示(顺序表)线性表的顺序存原创 2021-09-05 16:50:35 · 667 阅读 · 0 评论 -
堆排序(HeapSort)的学习及代码
文章目录前言一、堆的概念二、堆化三 、构造一个完整的堆四、进行堆排序五、总结前言提示:以下是本篇文章正文内容,下面案例可供参考一、堆的概念堆是一棵完全二叉树(完全二叉树可以理解为节点需从左往右连续)孩子节点的大小均小于或.大于父节点(孩子节点大的是小根堆,反之则是大根堆)示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、堆化将一个节点变成一个堆的结构,这里以大根堆为例思路:可以知道要修改的节点i的编号为 2 * i + 1原创 2021-06-15 10:48:17 · 341 阅读 · 4 评论 -
插入排序(InsertSort,ShellSort)分析及代码
文章目录一、直接插入排序1.基本思路2.算法分析3.代码二、折半插入排序1.基本思路2.算法分析3.代码3.希尔排序1.基本思路算法分析3.代码三种插入排序(直接插入排序、折半排序、希尔排序)一、直接插入排序1.基本思路从第二个元素开始,把前面的元素当成一个有序序列,进行排序。代码如下(示例):2.算法分析时间复杂度O(n2 )空间复杂度O(1)是一种稳定排序适用于顺序存储及链式存储的线性表3.代码代码如下(示例):void InsertSort(ElemT原创 2021-05-23 15:52:12 · 364 阅读 · 7 评论