数据结构与算法
Shishishi888
这个作者很懒,什么都没留下…
展开
-
数据结构(C语言实现):判断两棵二叉树是否相等,bug求解
判断两棵二叉树是否相等。遇到了bug,求大神帮忙!!!C语言源代码:#include <stdio.h>#include <stdlib.h>#include <malloc.h>#define OK 1#define ERROR 0typedef struct BiTNode{ char data; struct Bi...原创 2018-10-23 19:56:45 · 9152 阅读 · 12 评论 -
并查集
什么是查并集并查集实际上是数据结构树的简单应用,是一种用树来表示集合的数据结构,比如集合A和集合B,如图所示:集合A和集合B我们可以用一个数组来顺序表示一个树形集合中的各个结点,如图所示:用数组来表示集合A和集合B除0号位置外,数组中的每个位置的内容,是其对应结点的双亲结点的下标;第0号位置,也就是对应着根结点,储存的是这个集合中结点个数的相反数。查并集的...原创 2019-08-04 23:34:12 · 362 阅读 · 0 评论 -
求最小生成树 —— 卡鲁思卡尔算法
算法思想:将图中边按照权值从小到大排序(可以使用堆排序),然后从最小的边开始扫描,设置一个边的集合来记录,如果该边并入不构成回路(可以使用并查集来判断是否构成回路)的话,则将该边并入当前生成树。直到所有的边都检测为止。实现代码:#defineMAXSIZE100typedefstruct{ inta,b; //边的两个顶点 intweight...原创 2019-08-05 23:19:04 · 224 阅读 · 0 评论 -
求最短路径 —— 弗洛伊德算法
弗洛伊德算法是求图中任意一对顶点间的最短路径的算法。算法思想递推产生一个n解方阵序列,,...,,...,其中[ i ][ j ]表示从顶点到顶点的路径长度,k表示绕行第k个顶点的运算步骤。初始时,对于任意两个顶点和,若他们之间存在边,则以此边的权值作为它们之间的最短路径长度;若它们之间不存在有向边,则以∞作为它们之间的最短路径长度。以后逐步尝试在原路径中加入顶点...原创 2019-08-05 23:44:24 · 3792 阅读 · 1 评论 -
程序或算法的时间复杂度
复杂度概述一个程序或算法的时间效率,也成“时间复杂度”,有时简称“复杂度”。 复杂度常用大写字母O和小写字母n表示,比如O(n),O()等。n代表问题的规模。 时间复杂度是用算法运行过程中,某种时间固定的操作需要被执行的次数和n的关系来度量的。例如,在无序数列中查找某个数,复杂度是O(n)。 计算复杂度的时候,只统计执行次数最多的(n足够大时)那种固定操作的次数。比如某个算法需要执行加法...原创 2019-06-18 21:46:23 · 534 阅读 · 0 评论