- 博客(53)
- 收藏
- 关注
原创 数据结构——Map和Set
⼆叉搜索树⼜称⼆叉排序树,它可以是⼀棵空树,或者是具有以下性质的⼆叉树:•若它的左⼦树不为空,则左⼦树上所有节点的值都⼩于根节点的值•若它的右⼦树不为空,则右⼦树上所有节点的值都⼤于根节点的值•它的左右⼦树也分别为⼆叉搜索树。
2025-03-28 09:50:29
534
原创 数据结构——排序
用途: 用于比较两个对象是否“相等”。定义: 是 类中的一个方法,所有类都继承自 ,因此所有对象都有 方法。默认行为: 默认情况下, 方法比较的是两个对象的引用是否相同(即是否指向同一个内存地址)。重写: 通常需要根据业务逻辑重写 方法,以比较对象的内容是否相等。用途: 用于定义对象的自然排序顺序。定义: 是一个接口,包含一个方法 。实现: 类实现 接口后,必须实现 方法,该方法返回一个整数,表示当前对象与传入对象的比较结果。返回负数表示当前对象小于传入对象。返回零表示两者相等。返回正数表示当
2025-03-24 16:18:48
1011
原创 数据结构——优先级队列(堆)
概念:队列是⼀种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,⼀般出队列时,可能需要优先级⾼的元素先出队列,所以,数据结构应该提供两个最基本的操作,⼀个是返回最⾼优先级对象,⼀个是添加新的对象。这种数据结构就是优先级队列(Priority Queue)。JDK1.8中的PriorityQueue底层使⽤了堆这种数据结构。
2025-03-18 19:23:48
735
原创 数据结构——泛型
桥接方法(Bridge Method)是编译器自动生成的一个合成方法(synthetic method),用于在泛型类型擦除后保持多态性。它通常出现在以下场景中:泛型类的子类重写了父类的泛型方法。泛型接口的实现类实现了泛型方法。桥接方法的作用是将泛型类型擦除后的方法调用转发到具体类型的方法。上界(Upper Bound)用于限制泛型类型参数的范围,确保类型参数只能是某个特定类型或其子类型。通过使用上界,可以增强泛型代码的类型安全性和灵活性。泛型的上界通过 extends。
2025-03-05 17:59:06
712
原创 数据结构——时间与空间复杂度和包装类
在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法执行所耗费的时间。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。实际中我们计算时间复杂度时,我们其实并不一定要计算精确的执行次数,而只需要大概执行次数,那么这里我们使用大O的渐进表示法。另外有些算法的时间复杂度存在最好、平均和最坏情况:最坏情况:任意输入规模的最大运行次数上界平均情况:任意输入规模的期望运行次数最好情况:任意输入规模的最小运行次数下界。
2025-03-04 19:16:14
594
原创 数据结构——双链表
结构体需要包含三个成员,一个成员存储数据,一个成员存储前一个节点的地址,一个成员存储下一个节点的地址。//指针保存后一个节点的位置//指针保存前一个节点的位置}LTNode;
2025-02-27 16:35:16
295
原创 数据结构——基于单链表创建通讯录
创建一个结构体,存储联系人数据//前置声明//用户数据int age;}PeoInfo;2. SList.h创建一个结构体包含两个成员,一个成员存储联系人数据,一个成员存储下一个结点的地址(当下一个节点为空时保存的地址为NULL)
2025-02-26 15:29:33
278
原创 数据结构——单链表
一个结构体中包含两个成员。一个是存储数据,一个存放下一个结点的地址(当下一个节点为空时保存的地址为NULL)//将int类型命名为SLTDataType,便于后续更改//存储数据//存储下一个节点地址}SListNode;
2025-02-25 15:43:24
381
原创 C语言——文件操作
如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失 了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏,我们可以使⽤ ⽂件。磁盘(硬盘)上的⽂件是⽂件。在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类 的)。
2025-02-24 16:36:40
978
原创 认识异常吧
程序先执行try中的代码如果try中的代码出现异常就会结束try中的代码看和catch中的异常类型是否匹配如果找到匹配的异常类型就会执行catch中的代码如果没有找到匹配的异常类型就会将异常向上传递到上层调用者无论是否找到匹配的异常类型, finally中的代码都会被执行到在该方法结束之前执行).如果上层调用者也没有处理的了异常就继续向上传递一直到main方法也没有合适的代码处理异常就会交给JVM来进行处理此时程序就会异常终止。
2024-12-14 18:31:54
676
原创 String 类的方法查询
Unicode 码点是一个用于表示字符的唯一标识符。每个 Unicode 字符都有一个唯一的码点,通常表示为U+后跟一个十六进制数。它使得不同语言和符号可以在全球范围内标准化,方便跨平台的字符处理。Unicode 码点通过编码格式(如 UTF-8、UTF-16、UTF-32)存储和传输,在 Java 中可以通过int[]数组处理这些码点。
2024-12-13 16:09:18
957
1
原创 内部类和Object类
格式:匿名对象只可以调用一次成员 :1. 调用一次成员变量 :2.调用一次成员方法:匿名对象存在的必要:为了提高内存的使用性能,如果有一个变量(对象),在内存中再也不能使用了,那么这个对象很快就会被JMV标记成垃圾,被回收掉。
2024-12-09 22:17:18
661
原创 认识类和对象
基本规则1. 在文件的最上方加上一个 package 语句指定该代码在哪个包中.2. 包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式(例如 com.bit.demo1 ).3. 包名要和代码路径相匹配. 例如创建 com.bit.demo1 的包, 那么会存在一个对应的路径 com/bit/demo1 来存储代码.4. 如果一个类没有 package 语句, 则该类被放到一个默认包中.操作步骤:1. 在 IDEA 中先新建一个包: 右键 src -> 新建 -> 包。
2024-11-07 17:00:40
1145
原创 方法+数组
1.修饰符:现阶段直接使用固定搭配2.返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成 void3.方法名字:采用小驼峰命名4.参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开5.方法体:方法内部要执行的语句6.在java当中,方法必须写在类当中7.在java当中,方法不能嵌套定义8.在java当中,没有方法声明一说,方法定义放在函数调用前后都可以---------
2024-10-30 21:39:55
930
2
原创 初识java
JRE是运行基于Java语言编写的程序所不可缺少的运行环境。也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。JVM是整个Java实现跨平台的最核心的部分,所有的Java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行Java程序经编译后会产生byte code。
2024-06-06 00:09:35
1372
1
原创 Mysql 8.0.37 安装教程
图片有点长,慢慢来进入官网下载社区版此处有两个版本,我们下载的是8.0.37版本第一个需要联网安装,我们现在第二个离线安装server only:仅安装MySQL serverclient only:仅安装MySQL clientFull:安装所有模块custom:自定义安装这里我们选择自定义安装点击左边框框中的+,选择需要的扩展进行安装设置一个密码:自己可以记住就好。
2024-06-01 19:08:16
7949
17
原创 C语言——预处理详解
C语⾔设置了⼀些预定义符号,可以直接使⽤,预定义符号也是在预处理期间处理的。基本语法:name -- 宏名stuff -- 宏的替换文本当代码中出现name时,预处理器会将其替换为stuff#define reg register //为 register这个关键字,创建⼀个简短的名字;) //⽤更形象的符号来替换⼀种实现case //在写case语句的时候⾃动把 break写上。// 如果定义的 stuff过⻓,可以分成⼏⾏写,除了最后⼀⾏外,每⾏的后⾯都加⼀个反斜杠(续⾏符)。
2024-05-27 21:57:46
741
3
原创 C语言 —— 编译和链接
1.翻译环境和运⾏环境1.翻译环境和运⾏环境在ANSI C的任何⼀种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令(⼆进制指令)。第2种是执⾏环境,它⽤于实际执⾏代码。2.翻译环境那翻译环境是怎么将源代码转换为可执⾏的机器指令的呢?翻译环境是由编译和链接两个⼤的过程组成的,⽽编译⼜可以分解成:预处理(有些书也叫预编译)、编译、汇编三个过程。⼀个C语⾔的项⽬中可能有多个.c⽂件⼀起构建,那多个.c⽂件如何⽣成可执⾏程序呢?•。
2024-05-23 23:12:37
844
3
原创 C语言——模拟实现库函数atoi
INT_MAX 和 INT_MIN 是 C语言 的两个预定义宏,代表了整型变量能够存储的最大正整数21474836472^31 − 1)和最小负整数-2^31这个值是相对于二进制补码表示的,也就是说,负数的范围比正数大 1,这两个宏在头文件中定义。
2024-05-13 21:57:53
567
7
原创 C语言——动态内存管理
C99 中,结构中的最后⼀个元素允许是未知⼤⼩的数组,这就叫做『柔性数组』成员。1. 结构体中最后一个成员。(结构中的柔性数组成员前⾯必须⾄少⼀个其他成员)2. 最后一个成员是数组,且数组没有指定大小。
2024-05-10 01:11:38
1124
6
原创 C语言——联合体和枚举
联合体和结构体类似。联合体类型的声明:联合体的特点:像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以是不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是。。给联合体其中⼀个成员赋值,其他成员的值也跟着变化。我们发现当改变un.c时un.i也跟着改变,改变un.i时un.c也跟着改变。所以对于联合体来说,同一时间我们只用一个成员,否则会发生冲突。结论:同一时间在多个成员中我们只需要用到一个成员时,可以将多个成员放入联合体中。
2024-05-08 01:21:22
418
1
原创 C语言——结构体
C语⾔已经提供了内置类型,如:char、short、int、long、float、double等,但是只有这些内置类型还是不够的,假设我想描述学⽣,描述⼀本书,这时单⼀的内置类型是不⾏的。描述⼀个学⽣需要 名字、年龄、学号、⾝⾼、体重等;描述⼀本书需要作者、出版社、定价等。C语⾔为了解决这个问题,增加了结构体这种⾃定义的数据类型,让程序员可以⾃⼰创造适合的类型。结构是⼀些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量,如:标量、数组、指针,甚⾄是其他结构体。
2024-04-28 15:59:39
970
1
原创 C语言——数据在内存中的存储
其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为⼤端字节序存储和⼩端字节序存储。
2024-04-25 14:48:49
504
原创 C语言——内存函数的实现与模拟
与strcpy 函数类似1.头文件 2.基本格式•函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。•这个函数在遇到'\0'的时候并不会停下来。•如果source和destination有任何的重叠,复制的结果都是未定义的。模拟memcpy函数:(char*) dest强制转换是临时的,所以 *(char*) dest++中dest++时dest已经不是强制类型转换之后的char*类型了,可以写成。
2024-04-23 01:21:49
212
2
原创 C语言——字符函数和字符串函数
头文件定义了宏assert(),⽤于在运⾏时确保程序符合指定条件,如果不符合,就报 错终⽌运⾏。这个宏常常被称为。assert() 宏接受⼀个表达式作为参数。如果该表达式为真(返回值⾮零), assert() 不会产⽣任何作⽤,程序继续运⾏。如果该表达式为假(返回值为零), assert() 就会报错,在标准错误流stderr 中写⼊⼀条错误信息,assert() 的使⽤对程序员是⾮常友好的,使⽤ assert() 有⼏个好处:它不仅,还有⼀种。如果已经确认程序没有问。
2024-04-18 00:42:45
1229
2
原创 C语言——关于指针运算的例题分析
1.sizeof(数组名),这⾥的数组名表⽰整个数组,计算的是整个数组的⼤⼩。2.&数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址。3.除此之外所有的数组名都表⽰⾸元素的地址。1.一维数组。
2024-04-06 23:13:14
264
原创 C语言——姐带你一步步超详细用冒泡排序法模拟实现 qsort 函数
这里我们移将数组元素升序排列进行解释说明。第一组:从数组的首地址的元素开始,将首地址的元素和第二个地址的元素进行比较,如果首地址的元素大于第二个地址的元素,将首地址的元素和第二个地址的元素进行交换,反之不换;之后再将第二个地址的元素和第三个地址的元素进行比较,如果第二个地址的元素大于第三个地址的元素,将第二个地址的元素和第三个地址的元素进行交换,反之不换;以此类推,交换了n-1次后,数组的最大元素就放在了数组的最后。
2024-04-05 21:04:21
835
原创 C语言——深入理解指针
实数组名就是数组⾸元素(第⼀个元素)的地址,但是有两个例外:•,sizeof中单独放数组名,这⾥的数组名表⽰,计算的是整个数组的⼤⼩,单位是字节•,这⾥的数组名表⽰整个数组,(整个数组的地址和数组⾸元素的地址是有区别的)。除此之外,任何地⽅使⽤数组名,数组名都表⽰⾸元素的地址。
2024-04-03 21:17:02
1187
6
原创 C语言——用多种方法由易到难带你模拟计算器
我们通过函数指针数组将功能函数的地址都放在一个数组中,通过指针数组调用我们需要的功能函数,实现该函数功能,但是我们发现数组下标是从0开始的,我们输入0时代表游戏结束,所以我们将0放在指针数组的首元素中。我们发现功能函数的参数类型,个数和函数的返回类型都相同,但是在switch语句中,我们每实现一种功能函数,就需要写代码调用一次,未免太过冗余。时,被调⽤的函数就是回调函数。我们自定义一个test函数,将所需的功能函数的地址作为参数传递给test函数,调用该功能函数,输入两个数字实现该功能。
2024-04-03 21:16:55
447
1
原创 C语言——操作符的属性:优先性和结合性
常用运算符的优先级:1•圆括号(() ),使⽤它改变其他运算符的优先级2•⾃增运算符(++),⾃减运算符(--3•单⽬运算符(和4•乘法(),除法(5•加法(),减法(6•关系运算符(等)7•赋值运算符(
2024-03-23 16:22:15
1623
原创 C语言---操作符plus版
内存中存储的是二进制的补码内存中存储的是二进制的补码一. 操作符的分类•算术操作符:•移位操作符:>•位操作符:& | ^•赋值操作符:+=-=*=/=%==&=|=^=•单⽬操作符:!++--sizeof类型•关系操作符:>=
2024-03-17 23:28:31
670
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人