数据结构☞二叉搜索树BST

二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它可以是一棵空树,也可以是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二叉搜 ... »

算法很美,听我讲完这些Java经典算法包你爱上她

对于编程来说,只有掌握了算法才是了解了编程的灵魂,算法对于新手来说的话,属实有点难度,以后想有更好的发展,得到更好的进阶,对算法进行系统的学习是重中之重的。小羽今天为大家介绍的是关于 Java 需要了解的一些经典算法,希望对大家能有所帮助 ... »

LeetCode 3. Longest Substring Without Repeating Characters

题目描述 题目链接 思路 假设必须以i位置字符结尾的字符串最大不重复字串的长度是x,那么所有位置x值中最大的值就是答案。 i位置的x的值取决于两个因素。 第一个因素是i-1向左边能扩到最左位置(即:i-1位置上的x值)。 第二个因素是i位置的值上一次出现的位置。 这两个因素取最大值即可算出i位置的x ... »

树结构系列(一):从普通树到二叉查找树

#文章首发于「陈树义」公众号及个人博客 shuyi.tech,欢迎访问更多有趣有价值的文章。 文章首发于「陈树义」公众号及个人博客 shuyi.tech 树结构是数据结构中非常重要的一种类型,本文将从最基础的普通树结构入门,延伸到二叉树,再延伸至二叉查找树。通过这种思路,让大家构建起关于树的最基本的 ... »

双链表

c语言实现的双链表结构,包括插入,查找,删除,清空,销毁等基本操作 代码如下: #include<stdio.h> #include<stdlib.h> typedef struct student { char name[10]; int age; }student; typedef studen ... »

单链表c语言实现的形式

包括初始化,创建,查询,长度,删除,清空,销毁等操作 代码如下: #include<stdio.h> #include<stdlib.h> //定义单链表的数据类型 typedef struct book { char name[10]; char code[10]; float price; }b ... »

AOV网与拓扑排序

声明:图片及内容基于:https://www.bilibili.com/video/BV1Wp4y1X79x?from=articleDetail 原理 AOV网 拓扑排序 数据结构 核心代码 void ALGraph::TopologicalSort(){ for(int i=0;i<vertex ... »

最短路径(Floyd算法)

声明:图片及内容基于https://www.bilibili.com/video/BV1oa4y1e7Qt?from=articleDetail 多源最短路径的引入 Floyd算法 原理 加入a: 加入b: 加入c: 数据结构 核心代码 Floyd() void MGraph::Floyd(){ f ... »

单链表创建链表出现问题

单链表创建链表出现问题,一开始以为是length函数有错,但是排查不出来,经过博客问答,知到了问题的根本原因,随便还改正了代码混乱的毛病 博问链接: https://q.cnblogs.com/q/134034/ 错误代码: #include<stdio.h> #include<stdlib.h> ... »

冒泡排序

比较相邻的元素,如果前一个比后一个大,交换之。 第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这样直到倒数第2个和最后1个,将最大的数移动到最后一位。 第二趟将第二大的数移动至倒数第二位 ...... 因此需要n-1趟; `public static int[] maop ... »

关于100个人随机给钱的模拟实验

前言 在知乎上看到一个好玩的问题:房间里有100个人,每人都有100元钱,他们在玩一个游戏。每轮游戏中,每个人都要拿出一元钱随机给另一个人,最后这100个人的财富分布是怎样的? 今天使用java中的GUI来模拟一下。 实现 效果图如下 红色表示负债,模拟次数大概150W次。 代码实现 可视化主类 i ... »

常见排序算法总结

冒泡排序: 基本思路:每次冒泡总会将当前数组最大数据通过相邻数据比较交换,排到数组尾,因此一次冒泡至少排好一个数 据的顺序,经过n次冒泡就会将当前数组排好顺序。 空间复杂度:O(1),因为只涉及相邻数据互换,所以只需要常量级的临时空间,是原地排序算法。 稳定性:在冒泡排序中只有交换才改变数据顺序,而 ... »

数据结构基础 (代码效率优化, 线性表, 栈, 队列, 数组,字符串,树和二叉树,哈希表)

数据结构基础 代码效率优化 复杂度 -- 一个关于输入数据量n的函数 时间复杂度 -- 昂贵 与代码的结构设计有着紧密关系 一个顺序结构的代码,时间复杂度是O(1), 即任务与算例个数 n 无关 空间复杂度 -- 廉价 与数据结构设计有关 数据结构 -- 考虑如何去组织计算机中一定量的数据。 数据结 ... »

队列(循环队列)

声明:图片及内容基于https://www.bilibili.com/video/av94331942 原理分析 数据结构 FIFO:先进先出 front指向头元素的前一个位置 rear指向最后一个元素 如果用rear=front来判断队列为空还是满,会出现歧义,其实无法判断 此时,若再插入一个元素 ... »

循环单链表定义初始化及创建(C语言)

用C语言实现循环单链表的定义、初始化及创建。采用了四种不同的方法创建出两种循环单链表,头插法—头指针、尾插法—头指针、头插法—尾指针、尾插法—尾指针,都经过了测试,在此记录学习,便于回顾。 ... »

植树节,种个二叉树吧?

3 月 12 号,是全国的重大节日:植树节,记得小时候就跟随老师一起植过树。现在参加工作了,虽然没有植过树,但是学到过很多树的结构,比如二叉树、B+ 树,红黑树。每次面试必问,恰逢植树节,这里给大家做个二叉树的总结,也方便自己复习。 大白话讲解二叉树 比如现在有个数组,存放了很多用户的名字,需要从这 ... »

八皇后(回溯法)

题目描述 在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法! 设计思路 皇后位置 用一维数组表示,数组下标是行,元素是列 int place[8] = { 0 }; 冲突判断 flag保存哪一列已经存在皇后 bool flag[ ... »