自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 7、递归

/报错显示:TLE(超时) MLE(空间超限)--->找不全。返回到副本4里面的A()里继续执行下面的语句(如果有的话),执行完后再返回到副本3依次执行它A()下面的语句,依次返回。想实现的大问题:可以被拆成一个一个有规律的小问题,并且原问题和这些小问题的解决逻辑f(x)是一样的。2.对递归优化:尾递归(上层调用下层的时候把上层覆盖)--->编译器(支持/不支持 不支持不行)(2)写代码的时候不用往调用的深层次去想,直接把调用自身的语句当最终结果来看待。递归的代码:都有非递归的方式。

2024-12-01 23:47:19 480 1

原创 6、双端队列(附:可以直接打印显示的源码)

左边出队:printf(“%d”,data[(l+1)%maxsize]),l=(l+1)%maxsize。双端队列最主要的作用:方便用一个结构来实现栈和队列---》带了四个操作:左入队 左出队 右入队 右出队。线性表:(用存储结构实现:顺序存储结构实现的线性表称为顺序表,链式存储结构实现的线性表称为链表)队列:(用存储结构实现:顺序存储结构实现的队列称为顺序队列,链式存储结构实现的队列称为链式队列)栈:(用存储结构实现:顺序存储结构实现的栈称为顺序栈,链式存储结构实现的栈称为链栈)(即没有队首和队尾了)

2024-12-01 18:11:30 624

原创 5、队列及循环队列(附:可以直接打印显示的源码)

线性表-------->顺序表 链表。

2024-11-30 00:25:49 883

原创 4、栈及其实现(附:可以直接打印显示的源码)

这个“指针”是什么数据类型(具体取决于它保存的是啥)(如果是数组的位置,那么就是下标int数据类型,如果是链表保存数据,那么保存的就是真正的指针数据类型)初始化一个栈(用顺序栈来实现这个栈结构,那怎么来描述这个栈,得知道什么):得先知道用什么东西来存储数据--->(1)数组。栈顶“指针”:标记栈顶的位置(假如是数组的话,假设i=2是栈顶指针,则i的数据类型是int类型的,因为i为下标)初始化,入栈(添加一个元素),出栈(删除一个元素)(删除的只能是栈顶位置的元素),判空/判满,得到栈顶元素。

2024-11-29 00:17:16 971

原创 3、双链表和循环链表(附:可以直接打印显示的源码)

双向链表是基于单链表的优化双向链表 就是在单链表的基础上 每个结点增加一个指针域,改指针域保存上一个结点的地址相关概念:与单链表有共同相关概念。

2024-11-28 00:17:27 352

原创 2、单链表(附:可以直接打印显示的源码)

链式存储结构实现的线性表:链表指针指向:地址赋值链表:基于指针实现的1.data 数据2.下一个数据的地址:指针类型的变量1+2=结点---》结构体类型链表:用指针把互相关联的结点连接在一起就形成了链表。链表:单(向)链表 双向链表 循环链表(循环单链表和循环双链表)

2024-11-27 01:15:56 454

原创 1、数据结构概述及顺序表(附:可以直接打印显示的源码)

数据结构:数据元素之间的关系(逻辑关系)数据类型:高地电平 表示 1/0要做大量的运算:诞生了基本数据类型:int double .....--》反应了数据的取值范围(int字节:占4B--->-2^31~~~(2^31)-11bit: 0~12bit: 0~(2^2)-1 个数:2^2个数怎么算的 :00 01 10 11 四个为什么要减一: 因为除二后0没有对称,先拿出一个数跟0对称,然后再要减一32bit 表示多少个数:2^32。

2024-11-25 22:18:33 948

原创 C语言串讲-3之函数和数组

1.函数名是一个指针,保存函数地址入口。函数名是函数的入口地址。函数的入口地址称为函数指针。2.传参--本质是创建副本 (1)实参与形参(2)值传递,指针传递,引用传递 指针传递本质是值传递。C语言无引用传递,引用传递是C++的。3.函数调用--也可以理解为是创建副本。

2024-11-13 21:58:01 345

原创 Java第二阶段---17IO流---第一节 File类

java.io.File 类是对存储在磁盘上的文件信息的一个抽象表示。主要用于文件的创建、查找和删除。间接递归就是多个方法之间相互调用,形成一个闭环,从而构成递归。在方法内部再调用自身就是递归。递归分为直接递归和间接递归。使用递归打印文件夹下所有文件信息。直接递归就是方法自己调用自己。使用递归求1~100的累加和。思考:如何删除一个文件夹?使用递归求6的阶乘。

2024-11-13 20:15:51 256

原创 C语言串讲-2之指针和结构体

C 语言中,我们可以使用 sizeof 运算符来计算结构体的大小,sizeof 返回的是给定类型或变量的字节大小。计算机系统的内存拥有大量的存储单元,每个存储单元的大小为1字节,为了便于管理,必须为每个存储单元编号,该编号就是存储单元的“地址”,每个存储单元拥有一个唯一的地址。指针不同于一般变量,存的是变量的地址,在同一架构下地址长度都是相同的,所有不同类型的指针长度都一样。variable-list 结构变量,是可选的,定义在结构的末尾,最后一个分号之前,您可以指定一个或多个结构变量。

2024-11-13 20:11:06 793

原创 C语言串讲-1之基础语法

typedef 是 C 和 C++ 语言中的一个关键字,用于为现有的数据类型定义一个新的名称。9.&按位与 同1为1 通常用来对某些位清0或保留某些位 例:a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为0000000011111111)(1)在程序中,局部变量和全局变量的名称可以相同,但是在函数内,如果两个名字相同,会使用局部变量值,全局变量不会被使用。(2)函数的参数,形式参数,被当作该函数内的局部变量,如果与全局变量同名它们会优先使用。(参数也是局部变量)

2024-11-13 20:09:29 445

原创 Java第二阶段---16字符串---第二节 StringBuilder **和** StringBuffer

StringBuilder 类位于 java.lang 包中,无需引入,直接使用即可。StringBuilder 类是由 final 修饰的,表示 StringBuilder 是一个最终类,不可能被继承StringBuilder 类构建的对象,可以实现字符序列的追加,但不会产生新的对象,只是将这个字符序列保存在字符数组中。

2024-11-04 16:56:49 714

原创 Java第二阶段---16字符串---第一节 String

String 类位于 java.lang 包中,无需引入,直接使用即可。String 类是由 final 修饰的,表示String 类是一个最终类,不能够被继承。String 类构建的对象不可再被更改示例//当使用一个字面量给字符串赋值时,首先会去字符串常量池中检测是否存在这个字面量。如果存在//则直接使用这个字面量的地址赋值即可。如果不存在,则需要再字符串常量池中创建这个字面量,然后//再将地址赋值过去即可。String s = "超用心";s += "在线教育";

2024-11-01 20:09:39 501

原创 Java第二阶段---15异常---第三节 自定义异常

在Java中,异常的类型非常的多,要想使用这些异常,首先必须要熟悉它们。这无疑是一个巨大的工作量,很耗费时间。如果我们可以自定异常,则只需要熟悉 RuntimeException 、 Exception 和 Throwable 即可。这大大缩小了熟悉范围。自定义异常还可以帮助我们快速的定位问题。自定义运行时异常语法public class 类名 extends RuntimeException{}自定义检查异常语法public class 类名 extends Exception{}示例。

2024-11-01 20:05:32 335

原创 Java第二阶段---15异常---第二节 异常处理

的定义上对可能抛出的异常类型进行声明,自身不会对异常做出处理,由方法的调用者来处理。如果方法的调用者来处理,则异常将持续向上一级调用者抛出,直至main()方法为止,如果main()方法也未处理,那么程序可能因此终止。其中try表示尝试的意思,尝试执行try结构中的代码块,如果执行过程中抛出了异常,则交给catch语句块来进行捕获操作.throws 可以声明方法执行时可能抛出的异常类型,但需要注意的是:方法执行过程中只能抛出声明的异常类型的其中一个异常。}catch(异常类型 异常对象名){

2024-11-01 20:03:28 465

原创 Java第二阶段---15异常---第一节 异常(Exception)

该对象称为异常对象,包含有关错误的信息,包括错误的类型和发生错误时程序的状态。RuntimeException表示运行时异常,所有在程序运行的时候抛出的异常类型都是属于RuntimeException的子类,运行时异常一般来说程序可以自动恢复,不必处理。Exception表示异常的意思,主要是程序员在编写代码时考虑不周导致的问题。异常分为运行时异常和检查异常两大类,一旦程序出现这些异常,程序员应该处理这些异常。检查异常是指在编译代码的过程中发现不正确的编码所抛出的异常。

2024-11-01 19:54:35 179

原创 Java第二阶段---14多态---第二节 Object 类常用方法

Object类中定义的方法大多都是属于native方法,native表示的是本地方法,实现方式是在C++中。

2024-10-29 15:55:26 337

原创 Java第二阶段---14多态---第一节 多态(Polymorphism)

而instanceof运算符对转换的目标类型进行检测,如果是,则进行强制类型转换,这样可以保证程序的正常运行。多态性的字典定义是指在生物学原理,其中的生物体或物质可具有许多不同的形式或阶段。一个类的子类可以定义自己的独特行为,但可以共享父类的某些相同功能。这种行为称为虚拟方法调用,它说明了Java语言中重要的多态特征的一个方面。动物园中有老虎、熊猫、猴子等动物,每种动物吃的东西不一样,老虎吃肉、熊猫吃竹叶、猴子吃水果;如果动物园大量的引入动物,那么这个动物管理员就得添加多个相应的喂食方法。

2024-10-29 15:50:13 477

原创 Java第二阶段---13抽象类和接口---第三节 总结

4.抽象类主要应用在对于抽象事物的描述,而接口主要应用在对于约定、规则的描述。(抽象类更接近于类的描述,接口更偏向于功能的描述)3.抽象类中的方法可以有受保护、默认的方法,而接口中的方法都是公开的(JDK9中可以定义私有方法除外)2.抽象类可以定义成员变量、静态变量、静态常量,而接口中只能定义公开的静态常量。5.抽象类只能够单继承,而接口可以多继承(接口只能被实现)1.抽象类具有构造方法,而接口没有构造方法。

2024-10-10 23:30:24 179

原创 Java第二阶段---13抽象类和接口---第二节 接口

语法[public] interface 接口名{ //[]表示可有可无[public static final]数据类型 变量名 = 变量的值;//接口中定义变量,接口中定义的变量都是属于静态常量(在初始化的时候必须赋值),在定义的时候必须赋值 //变量是斜着的 是默认省略了public static final,接口中的变量 一定是public,因为除了public 其它的不能访问返回值类型 方法名([参数列表]);

2024-10-10 23:29:54 1071

原创 Java第二阶段---13抽象类和接口---第一节 抽象类

设备。

2024-10-09 21:59:57 480

原创 Java第二阶段---12继承---第三节 final 修饰符

从new Child()进去,进去Child类中发现Child他被Father继承,所以最先进入Father类(要不然继承 继承哪里来呢),Father进入,所以Father里面的static最先运行,然后再加载Child里面的static,然后往下走,Child要掉super(),进入Father里面调父类构造方法(即先调用父类,再调用子类构造方法)object类就是这样做的-它的许多方法都是最终的。如果一个类被final修饰,表示这个类是最终的类,因此这个类不能够再被继承,因为继承就是对类进行扩展。

2024-10-09 21:55:54 373

原创 Java第二阶段---12继承---第二节 方法重写(override)

如果子类的构造方法没有明确调用父类的构造方法,java编译器会自动插入一个父类无参构造的调用,如果父类没有无参构造,你将得到一个编译时错误。如果你的方法重写了父类的方法之一,则可以通过使用关键字super来调用父类中被重写的方法。所有类都是object的子类,因此,创建对象时都需要调用object类中的无参构造方法,而object本身就表示对象,因此创建出来的都是对象。子类中的一个成员方法与父类中的成员方法有相同的签名(方法名加上参数数量和参数类型)和返回值类型的实例方法重写了父类的方法。

2024-10-08 23:41:37 850

原创 Java第二阶段---12继承---第一节 继承

继承的概念很简单但是很强大:当你要创建一个新类并且已经有一个包含所需代码的类时,可以从现有类中派生新类。不论子类在什么包中,子类会继承父类中所有的公开的和受保护的成员(包括字段和 方法)。如果子类和父类在同一个包中,子类也会继承父类中受保护的成员。子类从其父类继承所有成员(字段,方法和嵌套类)。有类图可以看出, Programmer 和 Doctor 两个类中存在大量重复的代码,可以使用继承来进行优化,以减少重复的编码。尽管如此,如果父类有提供公开或者受保护的访问该字段的方法,这些方法也能在子类中被使用。

2024-10-08 23:38:32 687

原创 Java第二阶段---11封装---第四节 static 修饰符

static 修饰的代码块被称为静态代码块,在JVM第一次记载该类时执行。因此,静态代码代码块只能执行一次,通常用于一些系统设置场景。static修饰符只能用来修饰类中定义的成员变量、成员方法、代码块以及内部类(内部类有专门章节进行讲解)。static 修饰的成员变量称之为类变量。如果类变量是公开的,那么可以使用 类名.变量名 直接访问该类变量。static 修饰的成员方法称之为类方法,属于该类所有成员共享。如果类方法是公开的,那么可以使用 类名.方法名直接访问该类方法。2.static 修饰成员变量。

2024-10-07 17:23:56 477

原创 Java第二阶段---11封装---第三节 访问修饰符

public 修饰符修饰类表示可以公开访问。默认修饰符修饰类表示该类只能在同一个包中可以访问。类成员包括了成员属性和成员方法。类成员访问修饰符换言之就是成员属性和成员方法的访问修饰符。类的访问修饰符只有两种:public修饰符和默认修饰符(不写修饰符就是默认)访问修饰符就是控制访问权限的修饰符号。

2024-10-07 17:21:34 204

原创 Java第二阶段---11封装---第二节 包(Package)

包是Java中的一个专业词汇,包的本质就是一个文件夹。

2024-10-05 21:57:11 360

原创 Java第二阶段---11封装---第一节 封装(Encapsulation)

封装就是将类的部分(也可能是所有)属性和方法隐藏起来,不允外部程序直接访问,只能通过该类提供的公开的方法(接口)来访问类中定义的属性和方法。封装是面对对象的三大特征之一。

2024-10-05 21:55:07 296

原创 Java第二阶段---10方法带参---第三节 面向对象和面向过程的区别

1.案例。

2024-10-04 08:52:54 279

原创 Java第二阶段---10方法带参---第二节 方法重载(Overloading)

构造方法也是方法,因此构造方法也可以重载。如果在一个类中出现了多个构造方法的定义,那么这些构造方法就形成了构造方法重载。在同一个类中,方法名相同,参数列表不同的多个方法构造成方法重载。this关键字调用构造方法,必须是这个构造方法的第一条语句。下面的方法是否属于方法重载?

2024-10-04 08:48:46 314

原创 Java第二阶段---10方法带参---第一节 方法带参

思考:以上代码存在什么问题?每创建一个对象,都会出现重复为对象的属性赋值,这样造成大量的冗余代码,可以使用带参构造方法来进行优化。访问修饰符 类名(数据类型1 变量名1,数据类型2 变量名2 ... 数据类型n 变量名n){

2024-10-04 08:44:56 264

原创 Java第二阶段---09类和对象---第三节 构造方法

构造方法是一种特殊的方法,主要用于创建对象以及完成对象的属性初始化操作。构造方法不能被对象调用。

2024-09-08 15:27:02 474

原创 Java第二阶段---09类和对象---第二节 成员变量和成员方法

解释说明在类中定义的变量就是成员变量。成员变量顾名思义是属于成员(具体的对象、具体的事物)的,成员变量有初始值。成员变量的初始值:引用数据类型的初始值都是null,整数都是0,浮点数都是0.0,boolean类型是false,char类型是'\u0000'访问成员变量的语法对象名.属性名;示例//这里p成为对象名,//构建了一个具体的人,只是这个人目前没有姓名,年性别和年龄p.name = "刘德华";p.sex = "男";p.age = 53;

2024-09-08 15:05:28 1486

原创 Java第二阶段---09类和对象---第一节 类和对象

语法public class 类名{示例//人类类定义好了,如何填充类中的内容?找出人类的特征:姓名,性别,年龄//姓名//性别//年龄找出人类共同的行为:吃饭、睡觉、工作在类中如何描述人类的行为?在java中,使用方法来描述行为,方法的定义语法如下://[]中内容表示可有可无访问修饰符 返回值类型 方法名([参数列表]){[return 返回值;//特征//姓名//性别//年龄//人行为。

2024-09-08 11:55:23 1076

原创 8---阶段项目:五子棋(附带源码)

--------------------------分割线--------------------------------------------------------------静态变量可以在static修饰的方法中使用,也可以在非静态的方法中访问。静态方法就相当于一个箱子,只是这个箱子中装的是代码,需要使用这些代码的时候,就把这个箱子放在指定的位置即可。a.使用输入法中的制表符在控制台直接打印出棋盘,然后寻找落子位置的特征。b.落子位置必须是0-100之间的整数,且不能使用已经存在棋子的位置。

2024-09-07 17:25:57 585

原创 4.栈以及相关代码

(这个指针具有什么数据类型,取决于它保存啥--->如果是下标,则为int类型,“指针”只是说来用一下代指的,只是把名字拿来用,而不是它的含义,即变量)栈的实现:初始化,入栈(添加一个元素),出栈(删除一个元素--->只能删除栈顶元素),判空/判满,得到栈顶元素。线性逻辑结构: 2.栈------->顺序栈 (存储结构) 链式栈(存储结构)线性表:增删改查 可以在线性表的任意位置进行操作-------太灵活。初始化:top=-1(等于0代表0下标有元素)栈性质:先进后出/后进先出------>弹夹。

2024-08-01 09:30:45 363

原创 3.双链表和循环链表以及相关代码

双链表是基于对单链表的优化(由于单链表没有前驱指针,所以要找到前面一个结点不好找,只能去遍历,因此有了双链表)循环单链表的操作和单链表的操作一样,唯一的区别就是操作中的r->next=NULL 改为r->next=l;循环双链表的操作和双链表的操作一样,唯一的区别就是操作中的r->next=NULL 改为r->next=l;循环双链表:把双链表相接:l->pre=r r->next=l。循环单链表:把单链表首尾相接:r->next=l。循环单链表的结点结构和单链表的结点结构一样。--->加一个指针域。

2024-08-01 09:16:39 336

原创 2.单链表以及相关代码

因为Node s之后 s为这个结构体的变量名,在链表中用不着变量名,因为每个结点保存的是下一个结点的地址,所以用变量名的话,找地址的时候还得加取地址符号(&),所以直接用malloc来取空间,得到的就是地址,很方便直接用这个地址取赋值了,所以一般不用数据类型直接声明变量而是用malloc申请空间用指针来指向它。为什么带头结点:使得首元结点就不特殊了,更改后面的结点更容易(使首元结点一起更改)尾插法:在最后一个结点后面插入数据,新插入的结点做最后一个结点(尾结点)/////////////操作:增删改查。

2024-07-26 11:47:37 482

原创 1.顺序表以及相关代码

倒着循环 把i及i位置后面的数据 往后移动一个位置,把i位置空出来。2.查找:查找到给定数据的下标(位置),如果该数据不存在 返回-1。缺点:操作繁琐:插入和删除都需要移动大量的数据,不够灵活。线性表:n个数据元素的有限序列,按照线性结构排列。应用场景:以随机访问为主的需求中--->很少。顺序表:以一维数组的形式保存的线性表。优点:随机访问 data[i]3.删除:删除给定的数据k。4.改:把数据k->x。(2)往前调用 覆盖。

2024-07-26 11:37:43 261

原创 《数据结构》

存储结构:1.顺序存储结构:逻辑上是连续的数据,存储时,在物理上也连续。解决问题:存储结构(物理结构/映像)--->在计算机中实现逻辑关系。逻辑结构:线性逻辑结构:数据之间的关系是一对一的:线性表,栈,队列。使用抽象数据类型 定义 一个数据结构---> 数据集合+操作集合。非线性逻辑结构:数据之间的关系是一对多/多对多:树 图。基本数据类型:int double...--->数据的取值范围。分析问题:逻辑结构--->逻辑上分析 事物之间的关系。人:信息(数据)+行为--->函数/方法。

2024-07-26 11:35:51 436

空空如也

空空如也

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

TA关注的人

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