- 博客(28)
- 收藏
- 关注
原创 C语言指针:从初阶到进阶,一篇彻底吃透
野指针指的是指向一个无效内存地址的指针。也就是说,这个指针所指向的内存区域可能已经被释放、未被分配或者根本就不合法,对野指针进行解引用操作(访问指针所指向的内存)会导致未定义行为,程序可能会崩溃、产生错误的结果或者出现其他难以调试的问题。
2026-02-15 22:12:45
1090
4
原创 《排序的底层逻辑:比较、交换与分治》
时间复杂度取决于BAP,最好能达到o(n1.3gap大:分组的元素比较少gap下:分组的元素整体比较有序是否稳定:不稳定。
2026-11-05 23:31:37
223
原创 堆的基本操作:特殊的二叉树
堆的本质就是队列,只不过它是一种优先级队列。举个最简单的例子:我们去医院看病需要排队,但有一类病人不需要排队,那就是急救病人,他们的优先级最高。而优先级队列——也就是堆——正是按优先级出队的结构。## 1.1堆的基本特点①. 堆必须是一棵完全二叉树;大堆(大根堆):堆中父节点的值一定大于子节点;小堆(小根堆):堆中父节点的值一定小于子节点。## 1.2堆的模拟堆是用数组实现的,按层序遍历的顺序读取。如果堆中某个元素为 null,数组中对应位置也必须保留一个 null。
2026-10-31 11:50:23
149
2
原创 《二叉树的基础知识、操作方法与代码示例》
= 说个比喻,我们打游戏时,想要进入下一个副本就必须将前一个副本打完,一个接一个,按顺序写,这就是线性结构,都是连在一起的,而非线性结构就是你可以选择分支,打完一个副本后,你可以自己选择岔路口,不一定要按顺序,想先打左边的副本BOSS可以,右边的副本BOSS也可以==3)界限:先判断节点是否为空,返回0,再判断节点的左右是否为空.判断是否叶子节点,返回1;③.节点只有左子节点,后面的节点都必须没有节点(二阶段,标志为true);②.节点没有子节点,后面的节点都必须没有节点(二阶段,标志为true);
2026-10-10 22:28:39
137
原创 链表进阶2:双向链表的构建
1)首先要有头节点,判断是否为null,如果是,头节点指向新的节点;这个链表节点与先前的单向链表相比,多了一个prev指向前一个节点;2)新节点指向head,head的前一个节点prev指向新节点;1).通过循环遍历,找出要删除的值的节点,直接退出break;1)判断是不是头节点head为空或者只有一个节点;2)找到最后要删除的节点的上一个,让他指向空;3).最后考虑删除节点是否为尾部节点;2)当头节点为空时,全部指向新节点;3)删除节点的prev也要指向空;1)创建一个尾部节点,头节点;
2026-09-30 21:52:17
199
原创 《栈与队列:数据结构的“双生花”》
2).我们需要准备两个队列,一个用来存储元素,当出栈时,将A中的元素不断循环遍历倒腾到B,只剩一个元素就可以出栈了,达到了栈的出栈;这里我们用不一样的方法,之前我们在写入栈方法时,他是属于动态内存,用完了,可以直接继续不断地扩容,这次我们用固定数组。3)出栈时遵循后进先出,依次将A中的元素入到B中,B中采用后进先出,此时就达到队列的作用。2)检查B是否为空,如果不为空,首先将B的元素倒腾到A里面去,然后再对A进行入栈操作;2)判断,数值每次存储在satack,如果最小栈为空,存储value;
2026-09-28 19:55:11
116
原创 《链表基础:原理与搭建全解》
在之前我们学过线性表元素一个接个,然后还手搓了一个顺序表,而链表中的结构与顺序表有所不同,好比是火车,它是间断的连续,每一节火车车厢对应的就是链表的节点;
2026-08-03 13:37:29
191
原创 探索JAVA的异常
JAVA中最核心的就是类,我们现在学的异常就是一种类,在我们日常生活中,会遇到自己写出来的代码出现各种错误,但JAVA给的异常不可能全部覆盖,这就需要我们手动去定义异常类;下面写一个登录的代码,并定义异常;try{if(!throw new UserException("用户名错误");=age){throw new AgeException("年龄错误");System.out.println("捕获了这个异常");System.out.println("捕获了这个异常");
2026-04-12 13:33:55
400
原创 String类详解
这两个不同与String,是不同的两个类,JAVA中设计这两个是为了操作String的;,不只一个,可有多个,这里要用"",因为他的参数类型是字符串类型,不是字符类型;可以看到这个方法的返回值为boolean,正确返回true,错误返回false;String有专门提供查找的一系列方法,无需通过数组来进行遍历;可以将其他的类型如整型,浮点型转换为String类型;系列用途差不多,不同的是他的返回值在JAVA不一样;,与StringBuilder是相通的;==,则为4个==\\==在JAVA中区间都遵循。
2026-04-09 20:53:32
371
原创 抽象类与接口的原理、区别及应用
抽象类顾名思义就是抽象的类,这字面意思很容易理解;什么是抽象的?就是不能够被具体描述的,我们叫做抽象,例如我们之前写的Animal就是一个抽象类,动物并不是一个实例,具体,不像🐶,🐱这种,因此我们可以把之前的动物类,写作一个抽象类;
2026-03-29 20:33:28
315
原创 《Java 多态:代码世界中的“变形金刚”》
有两个人,一个比较温柔,大暖男,另一个可能是个直男,有一天他们在食堂吃饭,有一个很漂亮的美女出现,插在了前面,直男看到了,直接说:你眼睛没看见队在哪?而另一个暖男:你好,你估计是没看到吧!要不我帮你打,顺便加了微信这就是多态,在面对同一事物的时候,不同的对象所产生的状态是不一样的,而在JAVA中,这种思想也是差不多的。
2026-03-18 19:28:51
380
原创 《在 Java 星河中探寻继承之光》
继承这个概念很好理解,我们在生活中也有继承,例如,儿子继承了父亲的遗产,那么JAVA的继承有啥不一样?Cat类int age;System.out.println(this.name+"正在喵喵叫......");Dog类int age;System.out.println(this.name + "正在汪汪叫......");可以看到,这两个类是有共同属性的,那么能不能单独拿出来,形成共用?我们可以用到继承这是要被继承的,我们称为父类/超类,基类继承的称为子类/派生类。
2026-03-17 15:08:12
316
原创 《深度剖析 Java 类与对象:概念、机制与应用》
/ 成员变量System.out.println("这是类中的一个成员方法");这就是一个最基本的类,包含成员变量还有成员方法,其实还有构造方法,我们后面讲;关于类的定义,还有很多细节问题,现在先对类了解一下;
2026-03-13 22:54:23
382
原创 《二维数组:数字编织的梦幻矩阵》
数组的定义:二维数组就是特殊的一维数组在JAVA中这句话体现的淋漓尽致它的每一行就是一个一维数组,我们先创建一个二维数组,画图看一下。这里下标画错了,非常抱歉,下标索引是从0开始的;
2026-03-09 19:46:47
359
原创 《-128的“数字秘藏”:在char世界的神秘栖居》
在计算机的存储中,我们可以有多种方式进行存储,例如十进制的 1二进制: 00000000 00000000 00000000 00000001------>1的原码正数的原反补都是一样的;我们转为16进制也就是4个字节:00 00 00 01这些东西在计算机上,理论来讲是可以有多种存储,但我们要看的清楚,看得明白。00 00 00 01:左边是高位,右边是低位类比十进制中的数,例如:100大端:将高位的字节存储在低地址,低位的字节存储在高地址。
2026-03-02 13:54:55
806
1
原创 初识java方法+数组从0开始
在java中会出现一个词叫方法,这是啥?其实C当中的函数,是专门起到实现某种功能的;public static +返回值+方法名(形参);与C相比就多了个数组是一种用于存储相同类型多个元素的数据结构。// 方式一:指定数组元素类型,后跟[]和数组名元素类型[] 数组名;// 方式二:指定数组元素类型,数组名后跟[]元素类型 数组名[];// 方式一// 方式二通常推荐使用第一种方式,因为它更能清晰地表达变量是一个数组类型。
2026-02-24 16:02:51
958
原创 内存函数(紧跟字符函数)
想一下,如果我们要将arr1拷贝到arr2上,肯定不能用字符拷贝,这个时候就要用到内存拷贝。memset决定它能否填充多少,是有字节决定的,是走多少个字节,不是走多少个元素;str1 – 指向用于存储复制内容的目标数组,类型强制转换为 void。str1 – 指向用于存储复制内容的目标数组,类型强制转换为 void。str2 – 指向要复制的数据源,类型强制转换为 void。str2 – 指向要复制的数据源,类型强制转换为 void。用来设置,进行填充,他的填充由多少个字节决定;n – 要被复制的字节数。
2026-02-22 20:14:26
740
1
原创 字符与字符串函数
dest – 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串,包括额外的空字符。函数,对应头文件为==#include<errno.h>==的作用是==string copy ==:字符串的拷贝。这里说明常见的字符函数,这些知道了,剩下的都是一个套路;包含头文件==#include<ctype.h>==,头文件为==#include<stdio.h>==这里的拼接必须是从目标字符串的==\0==开始追加。str1 – 要进行比较的第一个字符串。src – 要复制的字符串。
2026-02-21 20:11:15
1065
原创 函数+扫雷游戏
自定义函数理解起来很简单,即手搓函数。根据自己的需求,想要什么函数自己写出来书写函数的内容//函数的定义int main()int a,b;printf("请输入数值\n");//函数的调用return 0;函数的定义其实就包含了函数的申明,在写简单程序时可以直接写在源文件中。
2026-01-29 21:00:58
1037
原创 分支与循环精讲(将会详细指出与java的细微差别)
switch和if语句用法相似,else与default相近都是用来当替补,做备胎的,需要记住以下几点;很明显-1是小于0的,在条件判断里面是假,但还是执行了一次;#①:else所匹配的是前面最近的if,else放在最后;go to 语句的作用是跳过,我们用一个关机代码演示一遍。很明显当用break是i=3时直接跳过,结束了所有循环;continue时只是跳过了i=3,后面循环还是会执行;③if-else if-else(多控制语句)C语言中非0为真,非0判断条件为真。else if(条件判断){
2025-12-22 14:41:41
1179
原创 java数据类型
这个代码没有问题就在于30ml装的水是满足10ml的水,例如装了5ml,10ml完全可以装;举个例子:我们有两个瓶子,一个瓶子最多装10ml的水,另一个瓶子只能装30ml的水。不做过多讲述,特别说一下字符串类型,属于引用数据类型,与字符类型独立。注意4:类型转换必须是同一类型整型与整型转,浮点型与浮点型转。我们把30ml的瓶子装满,如果换10ml瓶子装,装得下吗?整型分为byte,short,int ,long。举个简单例子,在我家乡我们把土豆叫做洋芋,土话。浮点型:用于存放小数,属于实型的一种。
2025-12-14 17:05:55
918
原创 C语言关键概念
1,C语言关键字是在C语言中有着特殊意义的字,它不能充当变量,可以提示效率;2,常见C语言(只做了解,混个脸熟,后续都会学到主要关键字)
2025-11-30 13:31:01
6563
2
原创 初识java+一道算法题
List item**//首先要用到基本的数学知识被除数 - 除数 = 商—余数List item//很明显要定义被除数与除数两个变量;被除数:bignumber;除数:smallnumber;List item//无法使用除法及其他运算,转换数学思想,用减法这一步是最重要的也是要想到的List item//最后商如果小于除数就得到了余数,从0开始累加的次数,即为商;**//键盘录入定义m System . out . println("请输入被除数:");
2025-11-30 11:48:25
5429
2
原创 初识java三个语句
分支语句根据需要打印出分支语句,if分支常见有3种格式。顺序语句顾名思义就是按照顺序一条一条的执行代码语句;执行语句1:执行语句2;//满足条件执行语句1,不满足执行语句2。使用较少后续单独写一下,列几道题;default ->{执行语句}case 1 ->{执行语句}case 2 ->{执行语句}三元运算符属于运算符,使用简便。switch(判断的值)switch(判断的值)//a>b是条件判断;①if(条件判断){②if(条件判断){③if(条件判断){
2025-11-29 18:05:49
457
JAVA图书管理系统框架
2026-03-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅