自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 数据结构->搜索树的实现和Map和Set

1.2.掌握 Map/Set及实际实现类的使用3.掌握HashMap和HashSet背后的数据结构哈希表的原理和简单实现二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树1.如果树为空树,即根== null,直接插入2.如果树不是空树,按照查找逻辑确定插入位置,插入新结点1.1. cur 是 root,则2. cur不是rootcur是,则3. cur不是rootcur是,则2.1. cur是root,则2. cur不是。

2024-07-17 21:47:31 513 1

原创 Lambda表达式函数式接口的介绍和使用

函数式接口定义:一个接口有且只有一个抽象方法。1. 如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口2. 如果我们在某个接口上声明了@FunctionalInterface 注解,那么编译器就会按照函数式接口的定义来要求该接 口,这样如果有两个抽象方法,程序编译就会报错的。所以,从某种意义上来说,只要你保证你的接口中只 有一个抽象方法,你可以不加这个注解。加上就会自动进行检测的。比如说:多线程里面的Thread的run方法就是一个函数式接口。

2024-07-17 21:46:57 356

原创 数据结构->优先级队列(堆)

1. 掌握堆的概念及实现2. 掌握 PriorityQueue 的使用2.3.1建堆的时间复杂度因为堆是完全二叉树,而满二叉树也是完全二叉树,此处为了简化使用满二叉树来证明(时间复杂度本来看的就是近似值,多几个节点不影响最终结果): 因此:建堆的时间复杂度为O(N)。 2.4 堆的插入与删除 2.4.1 堆的插入代码:类似于

2024-06-05 20:37:24 778 3

原创 数据结构->排序/插排/希尔排/堆排/二分排/归并/选排/冒排

1.直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用2.时间复杂度:O(N^2)3.空间复杂度:O(1)4.稳定性:不稳定。

2024-06-05 20:35:35 849 1

原创 深入入IAEA底层LinkedList

LinkedList的官方文档LinkedList的底层是双向链表结构链表后面介绍,由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。双向不循环链表图:在集合框架中,LinkedList也实现了List接口,具体如下:【说明】实现了List接口的底层使用了双向链表没有实现接口,因此LinkedList不支持随机访问。

2024-05-09 16:56:34 1053 69

原创 深度解析:数据结构二叉树(1)

1.2.3.树是一种的数据结构,它是由nn>=0)个有限结点组成一个具有层次关系的集合。。它具有以下的特点:有一个特殊的结点,称为根结点,根结点没有前驱结点除根结点外,其余结点被分成M(M > 0)个互不相交的集合T1T2......Tm,其中每一个集合Ti (1

2024-05-09 16:54:14 981 51

原创 无脑入单向无头链表的实现| ArrayList和LinkedList的区别

通过源码知道,ArrayList底层使用数组来存储元素。由于其底层是一段连续空间,当,效率比较低,因此。因此:java集合中又引入了LinkedList,即链表结构。链表是一种存储结构,数据元素的是通过链表中的次序实现的。实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:1.2.3.虽然有这么多的链表的结构,但是我们重点掌握两种,一般不会单独用来存数据。实际中更多是作为,如哈希桶、图的邻接表等等。

2024-04-28 17:54:44 1334 98

原创 IDEA的内层实现ArrayList|顺序表实战小项目

线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。

2024-04-27 17:43:08 1025 43

原创 【JAVASE】手搓异常:如何手动抛出异常|如何构建防御系统|常用异常防御案例|自定义异常类

程序先执行 try 中的代码如果 try 中的代码出现异常, 就会结束 try 中的代码, 看和 catch 中的异常类型是否匹配.如果找到匹配的异常类型, 就会执行 catch 中的代码如果没有找到匹配的异常类型, 就会将异常向上传递到上层调用者.无论是否找到匹配的异常类型, finally 中的代码都会被执行到(在该方法结束之前执行).如果上层调用者也没有处理的了异常, 就继续向上传递.一直到 main 方法也没有合适的代码处理异常, 就会交给 JVM 来进行处理, 此时程序就会异常终止.

2024-04-27 17:41:01 809 18

原创 【JAVASE】包装类&简单认识泛型

一般的类和方法,只能使用具体的类型要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的 代码,这种刻板的限制对代码的束缚就会很大。-----来源《Java编程思想》对泛型的介绍。泛型是在JDK1.5。

2024-04-26 11:23:24 1121 34

原创 JAVASE->数据结构|顺序表底层逻辑

在集合框架中,List是一个接口,继承自Collection。

2024-04-26 11:20:51 804 32

原创 java项目实战之图书管理系统(1)

图书管理系统是一种用于管理图书馆或书店藏书、借阅、归还等相关信息的软件系统。图书管理系统的背景是信息化和自动化的发展需求,旨在提高图书管理的效率、准确性和服务质量,同时为图书馆或书店提供更好的数据支持和管理手段。

2024-04-14 20:14:26 1546 31

原创 c语言->贪吃蛇实战技巧结合EasyX简单实现页面管理(简单实现)

1.游戏背景1.游戏背景贪吃蛇是久负盛名的游戏,它也和俄罗斯⽅块,扫雷等游戏位列经典游戏的⾏列。在编程语⾔的教学中,我们以贪吃蛇为例,从设计到代码实现来提升学⽣的编程能⼒和逻辑能⼒。2.游戏效果演⽰。

2024-04-13 13:39:56 2327 72

原创 【JAVASE】带你了解String类的常用方法和常见操作

由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。这两个类大部分功能是相同的,这里介绍 StringBuilder常用的一些方法

2024-04-13 13:33:45 1771 49

原创 【JAVASE】抽象类和接口及其抽象类和接口的区别

抽象类是一种包含抽象方法的类,不能被实例化,只能被继承。抽象类可以包含普通方法和抽象方法,子类必须实现所有抽象方法才能被实例化。抽象类可以包含成员变量,构造方法,静态方法等。子类只能继承一个抽象类。抽象类可以用来定义子类的通用行为,提供默认实现。接口是一种抽象类型,只包含常量和抽象方法的定义,不能包含普通方法的实现。类可以实现多个接口,实现接口的类必须实现接口中定义的所有方法。接口中的方法默认是公共的抽象方法,不需要使用abstract关键字。接口主要用于定义类的契约,实现多态和解耦的目的。

2024-04-11 20:39:24 1605 78

原创 【JAVASE】带你了解面向对象三大特性之一(多态)

例如:若干年前的手机,只能打电话,发短信,来电显示只能显示号码,而今天的手机在来电显示的时候,不仅仅可以显示号码,还可以显示头像,地区等。最好的方式是:重新定义一个新的类,来重复利用其中共性的内容, 并且添加或者改动新的内容。重写的好处在于子类可以根据需要,定义特定于自己的行为。当父类和子类都有同名属性的时候,通过父类引用,只能引用父类自己的成员属性。,即在编译时,不能确定方法的行为,需要等到程序运行时,才能够确定具体调用那个类的方法。向下转型用的比较少,而且不安全,万一转换失败,运行时就会抛异常。

2024-04-08 09:58:01 967 23

原创 【JAVASE】带你了解instanceof和equals的魅力

equals的话,它是属于java.lang.Object类里面的方法,如果该方法没有被重写过默认也是==;我们可以看到String等类的equals方法是被重写过的,而且String类在日常开发中用的比较多,久而久之,形成了equals是比较值的错误观点。

2024-04-07 15:26:22 1591 62

原创 【JAVASE】带你了解面向对象三大特性之一(继承)

继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性的基础上进行扩展,增加新功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程。继承主要解决的问题是:共性的抽取,实现代码复用。

2024-04-06 21:17:04 1672 61

原创 【JAVASE】面向对象程序三大特性之一( 封装)

在文件的最上方加上一个package语句指定该代码在哪个包中包名需要尽量指定成唯一的名字通常会用公司的域名的颠倒形式例如).包名要和代码路径相匹配例如创建的包那么会存在一个对应的路径来存储代码.如果一个类没有package语句则该类被放到一个默认包中。

2024-04-04 16:32:33 2290 73

原创 【JAVASE】学习类与对象的创建和实例化

面相对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机。但是洗衣机计算机并不认识,需要开发人员告诉给计算机什么是洗衣机。上图左侧就是。

2024-04-03 19:31:32 1238 25

原创 【JAVASE】学习数组的定义与使用

静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度。静态初始化时, {}中数据类型必须与[]前数据类型一致。

2024-04-01 19:10:40 2278 89

原创 【JAVASE】带你了解的方法魅力

方法就是一个代码片段

2024-03-31 07:15:00 2123 81

原创 【JAVASE】精密逻辑控制过程(分支和循环语句)

目标:1. Java中程序的逻辑控制语句2. Java中的输入输出方式3.完成猜数字游戏废话不多讲,我们直接开始。比较简单按照代码书写的顺序一行一行执行,如果调整代码的书写顺序则执行顺序也发生变化。

2024-03-30 12:40:04 1798 64

原创 【JAVASE】带你了解运算符奥秘(Java全部运算符)

目标:熟练掌握各种运算符废话不多说,我们直接开始。qt和c语言一样,但是取模运算符一点不同。说明什么,c语言里面%运算数只能是int l类型,但是java不同。% 不仅可以对整型取模,也可以对double类型取模,但是没有意义,一般都是对整型取模的做除法和取模时,右操作数不能为0。

2024-03-29 11:33:46 1790 60

原创 【JAVASE】数据类型与变量(主要学习与c语言不同之处)

字节是计算机中表示空间大小的基本单位计算机使用二进制表示数据我们认为8个二进制位(bit)为一个字节(Byte).我们平时的计算机为8GB内存意思是8G个字节其中所以8GB相当于80多亿个字节。

2024-03-26 16:03:30 2623 88

原创 初识Java

Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和 跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。

2024-03-25 20:22:13 2390 56

原创 数据结构->手把手教入门栈与列队(基础)

列队列队其实可以理解为排队队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先 进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一 端称为队头。

2024-03-23 20:45:34 2159 84

原创 数据结构->双向链表带你体验开火车(哨兵)与拼接火车(应用)厢的乐趣

目的:学习双向带头链表的增,删,查,销毁。

2024-03-11 20:57:13 1518 101

原创 【java开发者工具】IDEA(java编程语言开发的集成环境)带你了解背后故事与基础操作指南

​IDEA 全称 IntelliJ IDEA,是java编程语言的集成开发环境。IntelliJ在业界被公认为最好的Java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版还支持HTML,CSS,PHP,MySQL,Python等。

2024-03-07 14:30:00 7295 87

原创 数据结构->链表分类与oj(题),带你提升代码好感

链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表 中的指针链接次序实现的

2024-03-06 19:08:38 1815 88

原创 数据结构—>带你深入了解单链表(基础篇)

概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表的结构跟⽕⻋⻋厢相似,淡季时⻋次的⻋厢会相应减少,旺季时⻋次的⻋厢会额外增加⼏节。只需要将⽕⻋⾥的某节⻋厢去掉/加上,不会影响其他⻋厢,每节⻋厢都是独⽴存在的。⻋厢是独⽴存在的,且每节⻋厢都有⻋⻔。想象⼀下这样的场景,假设每节⻋厢的⻋⻔都是锁上的状 态,需要不同的钥匙才能解锁,每次只能携带⼀把钥匙的情况下如何从⻋头⾛到⻋尾?最简单的做法:每节⻋厢⾥都放⼀把下⼀节⻋厢的钥匙。那在。

2024-03-01 15:53:54 4710 92

原创 数据结构->顺序表实战指南,(手把手教会你拿捏数据结构顺序表)

顺序表(Sequential List):用一段物理地址连续的存储单元依次存储数据元素的线性结构。一般情况下采用数组存储。在数组上完成数据的增删查改。

2024-01-22 23:44:54 1678 44

原创 c语言->学会offsetof宏计算结构体相对偏移量

我们假设结构体起始地址就是0,这样其成员的地址取出来再强制类型转换为int便可以表示结构体中某个成员相对于起始位置的偏移量,这是一种很巧妙的思考方式,即可实现宏 offsetof 的模拟实现;

2024-01-22 18:58:27 738 11

原创 C 语言->编译和链接实现原理

1.翻译环境和运⾏环境1.翻译环境和运⾏环境在ANSI C的任何⼀种实现中,存在两个不同的环境。是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令。是执⾏环境,它⽤于实际执⾏代码。如图:2.翻译环境那翻译环境是怎么将源代码转换为可执⾏的机器指令的呢?这⾥我们就得展开开讲解⼀下翻译环境所 做的事情。其实翻译环境是由编译和链接两个⼤的过程组成的,⽽编译⼜可以分解成:预处理(有些书也叫预编 译)、编译、汇编三个过程。如图:.c文件生成可执行文件过程:•。

2024-01-19 22:13:44 2383 73

原创 枚举类型有着一篇足以

(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。(2)DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。在当前值没有赋值的情况下,枚举类型的当前值总是前一个值+1.(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。(5) 枚举型是预处理指令#define的替代。(6) 类型定义以分号;结束。

2024-01-19 13:21:10 639 44

原创 C语言-> 文件操作(函数满屏)

1.为什么使⽤⽂件?如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失 了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存,我们可以使⽤⽂件。2.什么是⽂件?。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类的)。2.1程序⽂件程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程序(windows 环境后缀为.exe)。

2023-12-19 20:41:59 10415 135

原创 数据结构 -> 时间复杂度和空间复杂度的计算(做题助推器)

1.2 时间复杂度的概念时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运 行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机 器上跑起来,才能知道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻烦,所以才有了时间复杂度这个分析方式。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。

2023-12-16 19:57:45 3222 87

原创 C语言->动态内存管理

目的:学习malloc,free,calloc,realloc函数的使用。1.为什么要有动态内存分配//在栈空间上开辟四个字节//在栈空间上开辟10个字节的连续空间但是上述的开辟空间的⽅式有两个特点:•空间开辟⼤⼩是固定的。•数组在申明的时候,必须指定数组的⻓度,数组空间⼀旦确定了⼤⼩不能调整。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间⼤⼩在程序运⾏的时候才能知道,那数组的编译时开辟空间的⽅式就不能满⾜了。

2023-12-15 15:24:18 2180 55

原创 c语言->自定义类型联合体和枚举类型

✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉学习联合体和枚举类型的声明联合体的特点和大小,枚举类型的有点和使用。1.联合体类型的声明像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。。给联合体其中⼀个成员赋值,其他成员的值也跟着变化。输出结果:4为什么是4呢?接下来我们来了看。

2023-12-12 09:57:13 3120 77

原创 c语言->浅学结构体

4.3位段的跨平台问题1.int 位段被当成有符号数还是⽆符号数是不确定的。2.位段中最⼤位的数⽬不能确定。(16位机器最⼤16,32位机器最⼤32,写成27,在16位机器会 出问题。3.位段中的成员在内存中从左向右分配,还是从右向左分配标准尚未定义。4.当⼀个结构包含两个位段,第⼆个位段成员⽐较⼤,⽆法容纳于第⼀个位段剩余的位时,是舍弃 剩余的位还是利⽤,这是不确定的。

2023-12-11 12:34:37 1888 42

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除