- 博客(18)
- 收藏
- 关注
原创 java深度优先遍历解决 力扣剑指 Offer 55 - I. 二叉树的深度
力扣剑指 Offer 55 - I. 二叉树的深度的java代码解决
2022-11-09 21:11:31
435
1
原创 创建二叉排序树,删除二叉排序树节点
创建一颗排序二叉树没什么好讲的,直接递归,然后添加到叶子节点上。我这里主要讲解如何删除节点!(Node里面的search和searchFather方法用来准备删除工作的)class Node{ Node leftNode; Node rightNode; int val; public Node(int val) { this.val = val; } @Override public String toString() {
2022-05-04 22:26:54
638
原创 创建霍夫曼树,霍夫曼编码以及使用霍夫曼编码压缩文件
那么,什么是霍夫曼树(赫夫曼树)呢? 给定n个权值(权值就是每个节点里面存放的数据,但是根据业务需求不同,存放的数据类型有些差别)作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。看这个定义你肯定也很懵,我这里举一个例子,就不要专研这个定义了,通过图形可以很快的看懂例如:权值分别为 5,3,9,1,6的这几个节点构建一颗二叉树首先排序这样创建的二叉树才是有序的那么排序的结果.
2022-04-26 17:54:33
1191
3
原创 使用数组以及单链表实现哈希表
在实现哈希表之前就简单的先介绍一下哈希表的结构,这样也有助于实现哈希表,结构如下:其实从图片当中可以明显的看出哈希表就是数组加上链表实现的(当然不止这一种组合),每一个数组元素都是存放了头结点(这个表头不可以变),并且这个头结点指向后面的单链表。综合以上,我们也就可以知道了,想建立一个哈希表就得要先建立一个带头结点的单链表。class Node { public int id; public String name; public Node next; pu
2022-04-12 17:48:17
747
原创 (算法篇)自写环形链表解决约瑟夫问题
约瑟夫问题我这里就不多赘述了,相比你们也看过几篇博客了吧!以下代码代表创建链表的格式class Node { private int no; // 编号 private Node next; public Node(int no) { this.next = null; this.no = no; } public int getNo() { return no; } public void s
2022-03-28 11:54:45
1057
1
原创 数据结构(2)循环的队列
什么是队列?1.队列是一个有序的列表,可以用数组或者链表实现2.遵循先入先出的原则,即:先存入队列的数据,要先取出,后存入的数据后取出(图是转载的,代码是我本人实现的)第二个图表示增加元素(移动rear),第三个图表示取出元素(移动front)那么什么是循环队列呢?其实也很简单,看上面的图,你有没有发现一些问题呢?当元素全部取出来的时候这个时候,会发现front...
2022-03-21 15:43:06
712
原创 数据结构(1)二维数组转稀疏数组,稀疏数组转为二维数组
什么是稀疏数组?当一个数组的元素大部分相同,例如数组初始化后默认值为0,只有一些特殊的数据,这个时候我们可以选择使用稀疏数组来存储,可以极大的节约内存的空间。这里我省略IO,你们自己尝试把稀疏数组放入电脑以上就是普通的二维数组转变为稀疏数组的原理稀疏数组的第一行分别表示 二维数组一共几行几列,以及有效的数字从稀疏数组的第二行开始就是用来记录一些特殊数据所在的行和列的位置,以及相对应的值首先第一步,创建并且初始化一个二维数组-----——————int[][] arr = n
2022-03-20 21:07:00
566
原创 (算法篇)Java实现删除链表倒数第n个节点
一下的题目来源于LeetCode——解答是本人所写给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]作者:3ft9bECfNx链接:https://leetcode-cn.com/problems/remove-nth-node-from-end
2022-02-24 19:35:46
1740
原创 java实现康威生命游戏
为了各位能够更直观的知道自己写对了没有,所以我把固定的图给你,让你做参照游戏规则:以一个17*17的正方形矩阵为例,每一个细胞都不会移动,但是会根据周围存活的细胞而决定自己的生死1、细胞过少:当这一状态周围存活细胞数小于2时,该细胞下一状态死亡。2、细胞稳定:当这一状态周围存活细胞数等于2时,该细胞下一状态保持原样。3、细胞繁殖:当这一状态周围存活细胞数等于3时,该细胞下一状态复活并存活。4、细胞过剩:当这一状态周围存活细胞数大于3时,该细胞下一状态死亡。以下白色的为死细胞,黑色
2022-02-14 22:10:52
4356
1
原创 java当中类的定义与类的访问,以及static修饰的数据,方法的注意(1)
直接上代码,看注释把class Person{ //字段,方法 //字段:field,也叫成员变量,前提是定义在类里面方法外面 //方法:method //实例成员变量,数据名存放在栈区,对象存放在堆区 public String name = "危辞皓"; public int age = 19; //静态数据成员 访问形式为:类名.数据名 静态数据放在方法区 public static int s = 2; //实例成
2022-02-09 22:23:03
485
4
原创 通过c语言和java的递归来实现青蛙跳台的问题
问题描述:一只青蛙一次能够跳1阶或者2阶台阶,一共有n阶台阶这只青蛙一共有几种跳法当我们一开始看到此问题时肯定会一下子摸不到头脑,没有想法,既然这样我们尝试使用笨办法来寻找其中的规律当台阶数为1时只有一种跳法,台阶数为2时则有两种台阶数为3时,则需要分类了青蛙第一次跳1阶,则剩下了2阶,那么与台阶数总共为2阶的跳法相同(两种)当青蛙第一次跳2阶时,则剩下了1阶台阶,那么就与总台阶数为1阶时相同(一种)由上述可知台阶数为3时跳法为3设总台阶数为:n , 跳法:sum通过上述.
2022-02-05 15:46:53
451
原创 读完这篇文章熟练使用void*指针
学习使用void*指针时,我们需要知道什么时候使用此类指针,以及它有什么样的作用。当我们学习或者使用库函数时,你是否想过为什么一些函数能传字符型的参数,又能传整型参数呢?并且又是如何接收它们的,这个时候,就是使用void* 指针接收的以模拟实现memcpy函数为例,简单点说,此函数的作用就是将一个字符串的内容拷贝到另一个字符串,那么直接上代码#include<stdio.h>void* my_memcpy(void* str1 , void* str2 , int num)
2022-01-12 19:56:52
317
原创 关于strcpy函数使用详解
我们知道当我们定义了一个字符时无法使用 “=”进行直接的修改这个时候就轮到了strcpy函数出场了首先使用这个函数我们要知道使用此函数时的参数strcpy(char* destination , char* source)第一个参数是代表我们需要拷贝到的地点,第二个参数是代表拷贝的内容使用的注意事项:1.目的地的空间需要比需要拷贝的空间大2.目的地的空间是要求可以修改的3.源字符串必须要以'\0'为结束注意事项讲完了,我们避免第一种情况是很简单的避免第二种状况我们只需
2022-01-11 12:11:49
1614
原创 关于浮点数储存知识
储存浮点数首先需要分解浮点数,分解方式如下——-1^S*M*2^E举一个例子:float a = 5.5在计算机内,我们知道浮点数是以二进制存储的 所以5的二进制数为101 , 0.5的二进制数为2^-1所以为0.1所以5.5的二进制数为101.10.1 = 2^-1-0.1 = -1^1*1*2^-1-1^0*1.011*2^2(S M E)对照上面的分解方式我们可知S=0M=1.011 E=2注意:在数据存储中M中的1不会存储进电脑,而会放入小数点后的位数E.
2022-01-08 20:59:28
482
原创 使用数组指针来打印二维数组
数组指针:用于指向整个数组的指针例如 int arr[5] = {1,2,3,4,5};int (*parr)[5] = &arr (&arr表示整个数组的地址)我们要知道为什么不用数组指针来打印一维数组呢?因为很明显,用平常的方法就可以了。使用数组指针来打印显得麻烦多了#include<stdio.h>void print(int(*p)[5], int i , int n){ int r = 0; int j = 0; for...
2021-12-03 17:37:56
1935
原创 利用强制类型转换了解数据以大端还是以小端字节序的方式储存
当我们要判断一个整型数据的储存方式时我们可以使用强制类型转换的方式来操作例如 : int a = 1; 整型数据是4个字节长。此时我们可以通过把int型转为char型就可以在利用if语句就可以知道存储方式了。#include<stdio.h>int main(){ int a = 1; char* pa = &a; if(char* pa == 1) { printf("小端"); }...
2021-11-28 15:21:27
724
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人