自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 1.数据结构-双链表

三.双链表的插入:图解:此时要p结点之后插入s结点,起初p->next指向y,先把p的下一个结点即y和要插入的结点即s的指向下一个结点的指针对接即s->next = p->next:之后还需要把p结点的后继结点即p->next的前向指针p->next->prior指向s即p->next->prior = s:再把要插入的结点即s结点的前驱指针指向p结点即 s->prior = p:最后把p结点的后继结点指向s即p->next = s:但对于上述代码,有一个bug,当p结点是最后一个结点时,p->ne

2024-09-17 22:46:31 582

原创 Stream流的思想和获取Stream流

流。

2024-09-14 22:09:54 1001

原创 单链表的查找与长度计算

版本二:王道书版本while循环进行到第5次时p指向NULL,不满足下一次循环条件,跳出while循环,此时返回的p为NULL:代表查找失败最终可知当i值不合法时即i为负数或者i值大于链表长度时最终都返回NULL,因此只需要判断返回结果是否为NULL即可得知是否查找成功。a.计算时间复杂度需要要查找的元素在合法范围内。b.平均时间复杂度是指此次输入的i值它取的合法范围内的任何一个数字的概率都等可能的情况,具体的算法和顺序表的按位查找的分析方法一样。案例二:后插操作的加入右下角的InsertNext

2024-09-13 00:12:58 276

原创 单链表的建立

对于时间复杂度,最好的时间复杂度是第一次,因为此时内层循环即找第i-1个结点就不执行了(不满足j<i-1),内层循环和外层循环时间复杂度都是O(n),所以整个尾插操作的时间复杂度为O(n * n)。(i为1时内层循环走0次,i为2时内层循环走1次,以此类推,i为n时内层循环走n-1次,那么一共走0+1+2+...+(n-1)次,易知时间复杂度为O(n * n) )但这个时间复杂度较高,因此没必要每次都从头开始寻找,可以设置一个指针指向表尾的最后一个数据结点,然后当要在尾部插入一个新的数据元素时只需要对尾部结

2024-09-13 00:02:47 784

原创 单链表的插入和删除

​​//定义单链表结点类型int data;//每个结点存放一个数据元素//指针指向下一个结点​​//初始化一个单链表(带头结点)//分配一个头结点if(L==NULL) //代表内存不足,分配失败-->意味着带头结点的单链表无法创建else//头结点之后暂时还没有节点,所以指向NULL​​//判断单链表是否为空(带头结点)if(L->next==NULL) //头结点之后如果指向NULL,代表没有数据else​​。

2024-09-10 00:04:27 874

原创 File的常见成员方法(所有获取并遍历的方法)

用list方法获取该路径下的所有内容(返回String数组),但最后却无法判断该字符串表示的是否为文件,大大降低了精准度。直接用listFiles方法获取该路径下的所有内容(返回File数组),但最后却无法与正则表达式应用。其中用到了方法endsWith(该方法属于String类),本例中就是让子级路径的后缀为.txt。法二:利用正则表达式。因此正则表达式用不了。

2024-09-07 11:23:12 416

原创 算法的基本概念

一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。注:算法(用有限步骤解决某个特定的问题)必须是有穷的,而程序可以是无穷或者有穷的如:微信是程序,但不是算法,因为微信在一直工作;死循环也不是算法;操作系统也不是算法,即使关机了,但后台操作系统仍在进行即无穷;算法中每条指令必须有确切的含义,对于相同的输入必须得出相同的输出。例如:把第一行年龄按照递增排序如果第一次输出为第二行的结果,第二次输出第三行的结果,那么这就不是算法,因为尽管年龄排序的结果一致,但名字不一样,要想是算法,就必须输出结果要

2024-09-07 11:03:54 331

原创 线性表的定义和基本操作

​x=1024;printf("test函数内部的x=%d \n",x);printf("调用test函数前x=%d \n",x);test(x);printf("调用test函数后x=%d \n",x);return 0;/*运行结果为调用test函数前x=1test函数内部的x=1024调用test函数后x=1*//*解析:主函数里有一个x,值为1,第一条打印语句里x为1,

2024-09-07 10:59:14 135

原创 顺序表的定义

比如数组,数组大小一旦确定,就不可以再被改变。ElemType代表数据类型,比如整型,浮点型等。

2024-09-07 10:56:05 310

原创 顺序表的查找

以顺序表的静态分配为例:例二:上述图片注意:data[0]后的data[1]不是紧跟着data[0],而是在占据data[0]该有的内存后才分配data[1](内存大小与所占字节有关,如整型占4个字节)malloc函数返回的存储空间起始地址要转换为与数据元素的数据类型相对应的指针,是因为虽然指针指向的都是同一个地址,但是如果指针所指向的数据类型给定义错了,那么在访问数据元素时也会出现问题。二.按位查找的时间复杂度:能实现"随机存取"是因为所有顺序表当中所有的数据元素在内存里面都是连续存放

2024-09-07 10:50:48 178

原创 顺序表的插入与删除

在b和d之间插入c,此时就需要把d,e,f都向后移一位,腾出一个位置后插入c。问题规模n=L.length(表长),当添加一个元素后,长度为n+1,所以在第一个位置添加元素时,要把前n个元素后移,空出第一个位置,此时长度为n+1。删除c后,后面的d,e,f都要前移一个,数组长度减一。ListDelete第三个参数有个&,这样就使得main函数里的e和ListDelete函数里的e是同一个e,不加&,main函数里的e和ListDelete函数里的e就不是同一个e了,执行完ListDelet

2024-09-07 10:46:54 350

原创 单链表的定义

相比于顺序表,单链表不可随机存取,因此单链表中查找数据必须是一个一个找-->查找效率低单链表每一个节点有数据元素和存放该元素的指针,该指针指向下一个节点GetElem方法解读:把单链表L中的第i个节点取出来,并返回。参数列表中LinkList L也可以用LNode *L。LNode是一个结构体类型,LNode *就代表返回了一个指针,因为p为指针。LinkList是指针类型,用->关键词访问数据。方法体解读:LNode *p=L->next;代表L是指针指向下一个节点。

2024-09-07 10:40:57 214

原创 初爽Stream流

2.把“张”开头的,长度为3的元素再存储到新集合中。1.把所有以“张”开头的元素存储到新集合中。按照下面的要求完成集合的创建和遍历。创建一个集合,存储多个字符串元素。3.遍历打印最终结果。

2024-09-01 16:58:04 283

原创 算法的空间复杂度

形参n和i各占4个字节,共8字节,是常数,可忽略。而数组flag所占字节是4 * n个,不是常数,不可忽略n为5和n为4时都有a,b,c的创建,只是地址不同,n为其他值时也一样。形参n和a,b,c都固定各占4个字节,共16个字节,所以每一次函数调用都大概需要16个字节来存储相应的信息即每一次aB个内存,而且共n次,刚好共占naB个内存数组flag所占字节和n有关,每一次函数调用n都会变化,因此flag所占字节每一次都会变化。

2024-08-31 21:46:19 321

原创 算法的时间复杂度

假设上述标记的5条语句执行时间相同(实际上时间不同,但考虑太多外在条件,就难以论述时间复杂度)语句频度:语句1-->只执行一次,因为顺序结构语句2-->执行了3001次,前3000次是符合i<=3000(i初值为1,n为3000,最后一次是i为3000时进行循环后i为3001,最后进行了一次循环条件的判断,发现不符合,跳出循环)语句3-->执行了3000次,因为只有进入循环才执行i++,循环了3000次语句4-->执行了3000次,因为只有进入循环才执行该语句,循环了3000次语句5-->只执行一次,因为顺

2024-08-31 21:42:17 539

原创 数据结构绪论

数据元素用于描述一个个体。

2024-08-30 19:58:33 153

原创 数据结构的三要素以及数据类型和抽象数据类型

顺序存储链式存储索引存储散列存储注:顺序存储数据之间必须相邻。链式存储,索引存储和散列存储的数据之间是不相邻的,即离散,也叫非顺序存储或离散存储。如连续的数据可用顺序存储,找不到连续的数据可用非顺序存储如上述例子中在b和d之间插入c,对于顺序存储插入c的话要把大量元素进行移动空出位置后才能插入c,而非顺序存储只需要在b和d之间找一个空的地方插入c再修改指针指向的地址即可,效率比顺序存储高。

2024-08-30 19:56:49 506

原创 LinkedHashMap和TreeMap的基本使用

2)键相同时,值不同->添加时以后来添加的为准:(添加元素的put方法有两个功能:添加,覆盖)二.TreeMap集合:(Map集合的儿子)1.特点与排序规则:键:整数表示id值:字符串表示商品名称要求:按照id的升序排列和按照id的降序排列按照id的升序排列:id为整型,属于基本数据类型,默认升序排列,所以无需重写比较规则 ​ Integer类里比较规则compare方法:按照id的降序排列:id为整型,属于基本数据类型,默认升序排列,但此时要降序排列,因此要重写比较规则--

2024-08-27 18:18:04 779

原创 HashMap基本的使用

底层原理:注:这里如果添加元素时发现已经有元素了,且属性值一样,就会覆盖掉原有的元素,而不是挂在下面;若属性值不一样,就会添加新的元素,挂在原有的元素下面形成链表,当链表的长度超过8且数组长度大于等于64时,链表自动转换为红黑树(JDK8以前新元素会添加到数组当中,原有的会挂在下面形成链表)

2024-08-26 21:56:26 856

原创 File的常见成员方法(获取并遍历)

【代码】File的常见成员方法(获取并遍历)

2024-08-22 20:54:55 213

原创 案例-异常

(如果一开始不知道如何用异常的语法写,可先用如if语句代替try...catch,最后再把if优化为try...catch)

2024-08-22 19:12:56 134

原创 异常在代码中的两个作用

这里有弊端,因为setAge这个方法并没有把结果告诉调用者,而是直接把结果打印在控制台。:异常可以作为方法内部的一种特殊返回值,以便通知调用者底层的执行情况。出错原因:Student是引用数据类型,初始值为null。其中只创建了数组对象,没创建数组元素对象。:异常是用来查询bug的关键参考信息。故为空值null,无法调用方法。正确代码如下:即用逗号分割即可。

2024-08-22 18:59:14 355

原创 File的常见成员方法(创建,删除)

本例中D盘下的JavaTest文件夹存在,而且在D盘下的JavaTest文件夹下此时没有要创建的文件c.txt,执行本例的代码后即可创建文件c.txt。1.Windows操作系统中路径是唯一的,如果当前路径已经存在或者有误,则创建失败,返回false。-->createNewFile方法创建的一定是文件,如果没有后缀名,则创建一个没有后缀的文件。:(在要创建的不存在下)若要创建的没有后缀,则会创建一个没有后缀的文件,不是文件夹,更不会报错。如果删除的是空文件夹,则直接删除,不走回收站。

2024-08-22 18:13:58 787

原创 File的常见成员方法(判断,获取)

文件。

2024-08-22 18:05:20 362

原创 DQL-案例

1.有 姓名 ,性别,入职时间(需要开始时间和结束时间-->范围查询);2.右下角有分页条-->需要分页展示输入条件: ​ 姓名:张 ​ 性别:男 ​ 入职时间:2000-01-01 到 2015-12-31规则:代码实现: 案例2:根据需求,完成员工信息的统计 案例2-1:根据需求,完成员工性别信息的统计 代码实现:先查询出男性员工和女性员工的数量: 运行结果为:但题目要求的是男性员工和女性员工的数量,所以要把gender下面的信息中1改为男性员工,2改为女性员工此时需要用

2024-08-20 20:39:55 710

原创 File的概述和构造方法

一.路径:相对路径开头不带盘符。二.File:1.File对象:File对象就表示一个路径,可以是文件的路径,也可以是文件夹的路径,这个路径可以是存在的,也可以是不存在的。2.File对象常见的构造方法:3.File对象常见的构造方法的代码演示:package com.itheima.a01myfile;​import java.io.File;​public class FileDemo1 { public static void main(Str

2024-08-15 23:01:17 289

原创 Map系列集合

注:Map集合是接口(不能实例化,只能创建实现类对象-->不能new Map),而且存的是一对对象(键和值)-->泛型要写两个。

2024-08-14 23:12:38 573

原创 TreeSet的排序方式

例如字符串排序:"aaa","aba","qwer","ab","cd"排序后为:"aaa","ab","aba","cd","qwer"(默认是升序排序)从第一个开始比,只要发现大的就停止比较,对于"ab"和"aba","ab"前两个和"aba"一样,"ab"在第三个比"aba"少一个字母,默认比"aba"小。需求:创建TreeSet集合,并添加3个学生对象学生对象属性:姓名,年龄。要求按照学生的年龄进行排序同年龄按照姓名字母排列(暂不考虑中文)同姓名,同年龄认为是同一个人错解:​。

2024-08-14 22:53:03 954

原创 红黑树,红黑规则,添加节点处理方案详解

根节点就是最上面的第一个节点。

2024-08-10 23:24:20 246

原创 LinkedList集合及迭代器的源码分析

​iterator源码如下:分析:解决方案:在使用迭代器或者是增强for遍历集合的过程中,不要使用**集合的方法**去添加或者删除元素即可。

2024-08-10 23:03:06 318

原创 HashSet,LinkedHashSet详解

LinkedHashSet集合比HashSet集合效率低,因为LinkedHashSet集合在哈希表的基础上又多做了一些事(操作数据顺序)。

2024-08-10 22:45:05 606

原创 二叉树,二叉查找树,平衡二叉树

1)每一个节点(也叫结点)都是一个独立的对象-->当中不仅要存数据值,还要存父节点地址值,左子节点地址值,右子 节点地址值2)没有父节点或者子节点的节点就记为null要从根节点*开始查找,之后根据小的在左边,大的在右边进行查找即可。

2024-07-31 22:18:17 398

原创 栈,队列,数组,链表

比如上图中要查找C,但此时只有A知道C的地址值,A的地址值又只有head(头结点)知道,导致要从头开始找,效率低。一个数据B,此时只需要创建一个新结点,假设地址为54。对于单向链表,只能从头结点开始,一个一个往后找;->如果离头近,从头开始一个一个往后找,b.每一个结点都是一个独立的对象;b.比如删除数据B,D之间的数据C。a.双向链表的效率比单向链表的高;会先判断第N个元素离头近还是离尾近。如果离尾近,从尾开始一个一个往前找。a.比如上图中要在数据A和C之间。d.第一个结点称为头结点。

2024-07-25 12:03:07 294

原创 数据结构概述

​ 栈,队列,数组,链,二叉树,二叉查找树,平衡二叉树,红黑树。1.每种数据结构长什么样子?

2024-07-25 11:54:43 283

原创 泛型的通配符和综合练习

泛型的通配符->关键点:用来限定类型的范围泛型的通配符表示不确定的类型 也可以进行类型的限定->两种写法:?extends E:表示可以传递E或者E所有的子类类型?super E:表示可以传递E或者E所有的父类类型。

2024-07-22 19:41:55 289

原创 Java语法细节(持续更新中)

protected出现多个catch块时,应该先处理小异常,再处理大异常,也就是将处理父类异常的catch块放在处理子类异常的catch块之后。Exception是所有异常的父类,如果处理Exception的catch语句块放在前面,会导致任何异常在这个catch块都能被匹配,后续catch块将变得没有意义。

2024-07-14 13:59:13 751

原创 11.拼图游戏登录界面代码

【代码】11.拼图游戏登录界面代码。

2024-06-12 18:15:25 121

原创 10.08和09的解析

代码中功能是JMenu,更换图片也是JMenu,美女,动物,运动是三个JMenuItem。1,在功能选项中添加更换图片,在更换图片里面再添加美女,动物,运动。5,细节1:选择完毕之后,游戏界面中需要加载所有的小图片并且打乱顺序。2,当我们点击了美女之后,就会从13组美女图片中随机选择一组。4,当我们点击了运动之后,就会从10组运动图片中随机选择一组。3,当我们点击了动物之后,就会从8组动物图片中随机选择一组。6,细节2:按A的时候显示的是选择之后的图片。参见day17作业文件夹。

2024-06-11 19:27:29 155

原创 09.登录界面的业务分析

分析业务逻辑分析所需要的技术点。

2024-06-11 19:23:48 391

原创 08.切换游戏图片的业务分析

分析业务逻辑分析所需要的技术点。

2024-06-11 19:21:22 314

空空如也

空空如也

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

TA关注的人

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