数据结构
文章平均质量分 92
数据结构
其铄
这个作者很懒,什么都没留下…
展开
-
二叉排序/搜索/查找树、平衡二叉树
文章目录1 二叉排序树2 平衡二叉树2.1 平衡二叉树的插入1 LL平衡旋转(左单旋转)2 RR平衡旋转(右单旋转)3 LR平衡旋转(先左旋、后右旋)3 RL平衡旋转(先右旋、后左旋)1 二叉排序树2 平衡二叉树平衡二叉树(Balanced Binary Tree),为避免树的高度增长过快,降低二叉排序树的性能,规定在插入和删除二叉树节点时,保证节点左、右子树高度差的绝对值不超过1(-1、0、1),将这样的二叉树成为平衡二叉树。又称AVL树,取自两个发明平衡二叉树的科学家的名字:G. M. Adels原创 2020-05-22 12:10:00 · 1308 阅读 · 2 评论 -
树和二叉树的基本性质及其推导
文章目录1 树的基本性质性质 1 :树中的节点数等于所有节点度数加 1性质 2 :度为 m 的树中第 i 层至多有 mi−1m^{i-1}mi−1个节点(i≥1i\geq 1i≥1)性质 3 :高度为 h 的 m 叉树至多有 mh−1m−1\frac{m^{h-1}}{m-1}m−1mh−1个节点性质 4 :具有 n 个节点的 m 叉树的最小高度为 ⌈logm(n∗(m−1)+1)⌉\lceil log_m (n*(m-1)+1) \rceil⌈logm(n∗(m−1)+1)⌉1 树的基本性质性原创 2020-05-18 13:23:35 · 4593 阅读 · 0 评论 -
编程求n个数的最小公倍数
文章目录1 最大公约数、最小公倍数2 编程求两数的最大公约数、最小公倍数2.1 欧几里德算法(辗转相除法)2.2 代码实现3 编程求n个连续数字的最小公倍数1 最大公约数、最小公倍数最小公倍数(Least Common Multiple)两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数最大公约数(Greatest Common Divis...原创 2020-04-27 14:54:35 · 2343 阅读 · 0 评论 -
Java解决约瑟夫环问题
文章目录1 约瑟夫环2 复杂的约瑟夫环1 约瑟夫环约瑟夫环问题起源于一个犹太故事。约瑟夫环问题的大意如下: 罗马人攻占了乔塔帕特,41个人藏在一个山洞中躲过了这场浩劫。这41个人中,包括历史学家Joseph(约瑟夫)和他的一个朋友。剩余的39个人为了表示不向罗马人臣服,决定集体自杀。大家决定了一个自杀方案,所有这41个人围成一个圆圈,由第1个人开始顺时针报数,每报数为3的人就立刻自杀,然由...原创 2020-02-07 22:41:35 · 1389 阅读 · 0 评论 -
Java进行多项式运算和生成随机数
文章目录1 判断闰年2 多项式求解2.1 一次多项式1 判断闰年 闰年(LeapYear)是阴历或阴历中有闰日的年,或阴阳历中有闰月的年。其实闰年问题是历法上的一种折中,主要是为弥补因人为制定的历法而造成的年度天数与地球实际公转周期的时间差而设置的。也就是说,补上时间差的年份称为闰年。 闰年的判定规则就是“四年一闰,百年不闰,四百年再闰“。即,闰年是能够被4整除但不能被100整除或能够被...原创 2020-02-07 17:47:13 · 783 阅读 · 0 评论 -
Java实现十大排序算法
文章目录1 冒泡排序2 选择排序3 插入排序4 希尔排序(shell排序/缩小增量排序)56789101112131 冒泡排序public class BubbleSortDemo { static final int SIZE = 30; public static void bubbleSort(int[] array) { int temp; ...原创 2020-02-06 19:40:07 · 1675 阅读 · 3 评论 -
Java实现顺序表、链表、栈、队列、二叉树、图
文章目录1 顺序表2 链表3 栈4 队列5 二叉树6 图1 顺序表import java.util.Scanner;//此示例顺序表下标从 1 开始,不是 0class DATA { String key; String name; int age;}class SLType { static final int MAXLENGTH = 100;...原创 2020-02-05 16:11:30 · 671 阅读 · 0 评论 -
C语言AOV网,拓扑排序完整算法实现
目录1.AOV网(Activity On Vertex Network)2.拓扑排序(Topological Sort)2.1拓扑排序概念2.2拓扑排序算法2.3拓扑排序举例3.源代码示例1.AOV网(Activity On Vertex Network)在分析和实施一些工程时,会根据需要将工程分成若干个小工程,这些小工程称为活动。当这些小工程完成时,整个工程也就完...原创 2019-04-30 23:28:53 · 4181 阅读 · 0 评论 -
C语言图的邻接矩阵建立算法
目录1.邻接矩阵(adjacency matrix)2.无向图的邻接矩阵表示3.有向图的邻接矩阵表示4.网的邻接矩阵表示5.示例源代码1.邻接矩阵(adjacency matrix)(1)用一维数组存储顶点信息(2)用矩阵(二维数组)表示图中顶点邻接关系2.无向图的邻接矩阵表示规定:若两节点连通,则在矩阵对应位置元素置1,否则置03.有向图的邻接矩阵...原创 2019-04-25 11:36:56 · 11192 阅读 · 2 评论 -
C语言图的邻接表存储
1.邻接表法邻接表有两个部分:顶点节点、边节点(1)顶点节点建立一个顺序表,用来存储图中所有顶点。每个顶点为表中一个元素,每个元素包含:数据域和指针域(firstedge)数据域:存储节点信息,如节点名称指针域:指向顶点的第一个邻接点存储结构如下:#define MAX_VERTEX_NUM 100 /* 图中最大节点数 */typedef struct vnod...原创 2019-04-24 22:51:06 · 5953 阅读 · 2 评论 -
C语言中序线索二叉树的建立及遍历
#include <stdio.h>#include <stdlib.h>#include <malloc.h>typedef char elemType;typedef struct BiTNode{ elemType data; struct BiTNode *lchild, *rchild; int LTag, RTag...原创 2019-04-23 22:02:26 · 9096 阅读 · 6 评论 -
C语言动态查找表之二叉排序树
目录1.静态查找表与动态查找表的比较2.二叉排序树(Binary Sort Tree)2.1二叉排序树的定义2.2二叉排序树的查找算法2.3二叉排序树的插入算法2.4二叉排序树的构造算法2.5二叉排序树的删除算法3.源代码示例1.静态查找表与动态查找表的比较静态查找表一旦生成,所含记录在查找过程中一般是固定不变的。动态查找表不仅可以实现对数据的查找,在表生成...原创 2019-05-02 20:04:14 · 2397 阅读 · 0 评论 -
用顺序表实现一元多项式的存储及运算
Pn(x)P_n(x)Pn(x) = p0p_0p0+p1x1p_1x^1p1x1+p2x2p_2x^2p2x2+p3x3p_3x^3p3x3+……+pnxnp_nx^npnxn,用单链表PPP表示:PPP = (p0p_0p0, p1p_1p1, p2p_2p2, p3p_3p3,……, pnp_npn);同理QQQ:QQQ = (q0q_0q0, q1q_1q1,...原创 2019-04-11 21:13:35 · 7703 阅读 · 0 评论 -
算法的时间复杂度
假设运行总次数为:3n2n^2n2 + 4n + 5算法时间复杂度推算规则步骤举例用常数 1 取代运行时间中的所有加法常数3n^2 + 4n在修改后的运行次数函数中,只保留最高阶项3n^2如果最高阶项存在且不是 1 ,则去除与这个项相乘的常数n^2算法时间复杂度推算规则T(n) = O(n^2)1. 各典型时间复杂度关系O(1) < O(log2n\log_2nl...原创 2019-04-09 17:36:07 · 326 阅读 · 0 评论 -
数据结构顺序线性表操作集合
线性表有顺序表和链式表,下面是顺序表各操作实现#include <stdio.h>#include <stdlib.h>typedef int dataType;#define MAXSIZE 50typedef struct{ dataType data[MAXSIZE]; int last;//值等于数组中最后一个元素的下标,可指示数组长度...原创 2019-04-10 09:48:59 · 295 阅读 · 0 评论 -
C/C++/java/python二叉树的创建及遍历:递归遍历、非递归遍历、层次遍历、Morris遍历
1.递归遍历#include <stdio.h>#include <stdlib.h>#include <malloc.h>typedef char elemType;typedef struct BiTNode{ elemType data; struct BiTNode *lchild, *rchild;}BiTNode, ...原创 2019-04-20 23:50:18 · 3681 阅读 · 3 评论 -
C语言实现顺序队列、循环队列、链式队列
队列:先进先出(FIFO)。队尾入队,队头出队。1.顺序队列#include <stdio.h>#include <stdlib.h>#define MAXSIZE 100typedef int dataType;typedef struct{ dataType data[MAXSIZE]; int front, rear; ..................原创 2019-04-13 19:02:54 · 2419 阅读 · 0 评论 -
C语言实现顺序栈 和 链式栈
栈:先进后出1.顺序栈#include <stdio.h>#include <stdlib.h>#define STACK_INIT_SIZE 100 //栈初始容量#define STACKINCREMENT 10 //存储空间分配增量typedef int dataType;typedef struct{ dataType *base; .........原创 2019-04-14 09:49:49 · 1485 阅读 · 3 评论 -
C语言基于邻接表的图的深度优先、广度优先遍历
目录1.深度优先(Depth_First Search)2.广度优先(Broadth_First Search)3.源代码示例3.1深度优先3.2广度优先假设有无向图G = (V,E),标志数组visited [ n ](1)点集 V = { } 边集 E = { }(2)visited [ n ] (n为图中顶点个数,初始元素都为0)若.....................原创 2019-04-26 09:34:43 · 37928 阅读 · 12 评论 -
Java、C语言普里姆算法最小生成树
目录1.生成树的概念2.普里姆算法最小生成树(Prim)3.源代码示例3.1 Java实现3.2C语言实现1.生成树的概念(1)子图包含原图全部节点,子图为连通图(2)在(1)的前提下使子图尽可能的少包含原图中的边满足以上两点的子图称为原图的生成树。生成树必定包含且仅包含原图的 n - 1 条边最小生成树:在图的所有生成树中,n - 1 条边上权值和最小...原创 2019-04-26 16:28:25 · 3521 阅读 · 2 评论 -
C语言构造哈夫曼树、哈夫曼编码
1.构造哈夫曼树#include <stdio.h>#include <stdlib.h>#define MAXVALUE 10000 /* 节点最大权值 */#define MAXLEAF 30 /* 哈夫曼树叶子节点最大个数 */#define MAXNODE MAXLEAF * 2 - 1 /* Huffman树...原创 2019-04-22 20:20:15 · 3157 阅读 · 2 评论 -
C语言AOE网、关键路径
目录1.AOE网(Activity On Edge Network)1.1AOE网的概念1.2AOE网两个顶点2.关键路径2.1关键路径的概念2.2关键路径的几点说明2.3关键路径的求解步骤2.4关键路径求解示例1.AOE网(Activity On Edge Network)1.1AOE网的概念若在带权的有向图中,用有向边表示活动(子工程),边上的权值表...原创 2019-05-01 17:21:36 · 4001 阅读 · 0 评论 -
C语言静态查找表:顺序查找、二分查找、分块查找
目录1.静态查找表2.静态查找的三种方法2.1顺序查找2.1.1概念2.1.2分类2.1.3源代码示例2.1.4性能分析2.2二分查找2.2.1实现算法前提2.2.2实现思路(以升序为例)2.2.3源代码示例2.2.4性能分析2.3分块查找2.3.1概念2.3.2实现思路2.3.3特点2.3.4源代码示例2.3.5性能分析...原创 2019-05-02 11:49:06 · 7918 阅读 · 1 评论 -
迪杰斯特拉(Dijkstra)算法求最短路径
1.Dijkstra算法原理(1)两个顶点集 S 、T = V - S(V是原图所有顶点集合)S:存放已找到最短路径的顶点T:存放未找到最短路径的顶点(2)实现步骤:先将开始节点(V0)加入 S,不断从 T 中选取到 V0 有最短路径的顶点 (u),将 u 加入 S;S 中每加入一个顶点都要修改 V0 到 T 中剩余顶点的最短路径长度值。直到 T 中顶点全部加入 S。...原创 2019-04-27 19:29:01 · 7245 阅读 · 6 评论