- 博客(17)
- 收藏
- 关注
原创 二叉树相关练习
解题思路:判断一棵树是否轴对称,先判断左右子树结构是否相同,结构相同的情况下再判断对应的val是否轴对称,判断根节点的左右子树,再判断根节点的左右子树的左右子树是否轴对称,如此递归下去;解题思路:创建一个队列,把根节点放入队列中 ,进入队列不为空的外部循环后,求此时的队列的长度size,进入size!=0的循环,出一个,size-1,左右子树不为空就进队列;如上述列子过程,队列进根节点一个,进入循环后就出队列,再左子树9和20进队列,9节点左右子树为空就不会进队了,出9后,出20,进15和7;
2024-08-31 22:17:41
807
4
原创 二叉树(数据结构)
1.一棵二叉树,如果。也就是说,。2.完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从0至n-1的结点一一对应时称之为完全二叉树。要注意的是满二叉树是一种特殊的完全二叉树。2二叉树的性质1.若规定,则一棵2.若规定只有,则(k>=0)3.对任何一棵二叉树如果其4.具有5.对于具有,如果按照,则对于若i>0;,无双亲结点和。常见是类似于链表的链式存储。
2024-08-30 21:44:25
881
原创 栈和队列(数据结构)
一种特殊的线性表,其。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO)的原则。压栈:栈的插入操作叫做进栈压栈入栈,。出栈:栈的删除操作叫做出栈。。如图所示:进栈:进栈顺序是ABCD,A先压入栈底,B压在A上,如此依次压栈,最后的D就是栈顶数据出栈:只能从一端出,所以栈顶数据先出,出栈顺序就为DCBA,D最先出,A最后出现实生活也有很多像栈一样的结构,如枪里的子弹最先打出去的是最后装的子弹,羽毛球桶最先拿出来的羽毛球是最后放进去的,都符合栈的。
2024-08-08 12:53:21
730
7
原创 优先级队列(堆)
该中场景下,使用队列显然不合适,比如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话;找倒数第一个非叶子节点,从该节点位置开始往前一直到根节点,遇到一个节点,应用向下调整。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。小的元素向下移动,可能到值子树不满足对的性质,因此需要继续向上调增。中常见的几种构造方式,其他的学生们可以参考帮助文档。堆中某个节点的值总是不大于或不小于其父节点的值;将最后新插入的节点向上调整,直到满足堆的性质。中的数据,如果将其创建成堆呢?
2024-07-23 13:29:53
886
3
原创 异常处理(java)
对异常并没有真正处理,而是将异常报告给抛出异常方法的调用者,由调用者处理。处在方法声明时参数列表之后,当方法中抛出编译时异常,用户不想处理该异常,此时就可以借助。如果捕获了,由于捕获时类型不对,那就没有捕获到,这里的代码就不会被执行。在程序执行期间发生的异常,称为运行时异常,也称为非受检查异常。当异常被捕获到时,异常就被处理了,这里的后序代码一定会执行。如果抛出的是编译时异常,用户必须处理,否则无法通过编译。注意:编译时出现的语法性错误,不能称之为异常。对异常就可以正常处理,处理完成后,跳出。
2024-06-08 15:24:45
602
3
原创 吃透String类
1、String表示字符串类型,属于,不属于基本数据类型。2、在java中随便使用双引号括起来的都是String对象。例如:“abc”,“2344f”,“hello world!”,这是3个String对象。
2024-06-02 17:30:22
245
1
原创 图书管理系统(javaSE)
图书管理系统,首先要应该想到要有书,然后放书的书架,要有管理者,对应就要有普通的使用者,最后管理者的管理操作和使用操作,一个大体框架就是这样。对应上图,我们创建。
2024-05-26 20:23:57
391
原创 java 继承、多态
Java中使用类对现实世界中实体来进行描述,类经过实例化之后的产物对象,则可以用来表示现实中的实体,但是现实世界错综复杂,事物之间可能会存在一些关联,那在设计程序是就需要考虑。。1.1继承概念:例如:狗和猫都是动物,那么我们就可以将共性的内容进行抽取,然后采用继承的思想来达到共用。在Java中如果要表示类之间的继承关系,需要借助关键字,具体如下:修饰符class子类extends父类// ...1.2.
2024-05-19 22:08:02
803
1
原创 java类与对象(2)
根据代码块定义的位置以及关键字,又可分为以下四种:1.普通代码块普通代码块:定义在方法中的代码块2.构造块构造块:定义在类中的代码块(不加修饰符。
2024-05-19 20:59:07
322
原创 java(类和对象)
与intdouble类似,只不过int和double是java语言自带的内置类型,而类是用户自定义了一个新的类型,比如上述的:Student类。它们都是类一种新定义的类型有了这些自定义的类型之后,就可以使用这些类来定义实例或者称为对象。
2024-05-16 14:55:15
446
2
原创 编译和链接
那翻译环境是怎么将源代码转换为可执行的机器指令的呢?这里我们就得展开开讲解⼀下翻译环境所做的事情。其实翻译环境是由编译和链接两个大的过程组成的,而编译又可以分解成:预处理(有些书也叫预编译)、编译、汇编三个过程。
2024-04-01 22:13:45
353
1
原创 文件读写操作
缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”。每个被使用的文件都在内存中开辟了⼀个相应的文件信息区,用来存放文件的相关信息(如文件的名 字,文件状态及文件当前的位置等)。这些信息是保存在⼀个结构体变量中的。该结构体类型是由系统声明的,取名 FILE.每当打开⼀个文件的时候,系统会根据文件的情况自动创建⼀个FILE结构的变量,并填充其中的信息,使用者不必关心细节。⼀般都是通过⼀个FILE的指针来维护这个FILE结构的变量,这样使用起来更加方便。
2024-03-31 16:51:05
597
2
原创 详细学习结构体
这就创建了一个结构体,接下来是两种初始化:int main()//按照结构体成员的顺序初始化structStu s1= {张三20男printf, s.name);printf, s.age);printf, s.sex);printf, s.id);//按照指定的顺序初始化structStu s2= { .age =18, .name ="lisi", .id =, .sex =⼥printf, s2.name);printf。
2024-03-20 22:15:21
743
2
原创 浮点数在内存中的存储
上面的代码中,num和*pFloat在内存中明明是同一个数,为什么浮点数和整数的解读结果会差别那么大,原因当然是两者的存储方式和读取有所不同了,整型存储在上一篇文章讲了,有不懂可以看看我的上一篇,现在主要讲讲浮点数的存储了,要理解这个结果,⼀定要搞懂浮点数在计算机内部的表⽰⽅法。根据国际标准IEEE(电⽓和电⼦⼯程协会) 754,任意⼀个⼆进制浮点数V可以表⽰成下⾯的形式:V= (−1) ∗SM∗ 2E•(−1)S表⽰符号位,当S=0,V为正数;当S=1,V为负数•。
2024-03-18 17:37:21
940
1
原创 内存函数及数据存储
其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为⼤端字节序存储和⼩端字节序存储,下⾯是具体的概念:⼤端(存储)模式:是指数据的低位字节内容保存在内存的⾼地址处,⽽数据的⾼位字节内容,保存在内存的低地址处。⼩端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,⽽数据的⾼位字节内容,保存在内存的⾼地址处。上述概念需要记住,⽅便分辨⼤⼩端对于整数可以这么记:小逆大顺。
2024-03-17 21:08:10
363
1
原创 指针回顾总结(1)
简而言之,指针变量就是存储地址的,我们通过指针变量,也就是所存地址可以找到你所需要的数据。举个列子助我们理解:在大学中,指导员管理那么多人,不可能每个人住那个寝室都知道,所以指导员找同学就要知道该同学的寝室号,也就是地址,根据地址找到该同学。那么这个例子中,指导员管理同学就好比电脑管理数据一样,找到所需要的数据也需要知道该数据的地址,通过地址找到该数据,而指针变量便是存储地址的。a=9;int*p=&a;//p就是一个指针变量,类型是int*
2024-03-06 21:29:55
785
原创 c语言实现扫雷游戏(精简)
我建立的是9*9的棋盘,可以清晰观察坐标,虽然是9*9,但是建立棋盘的时候是11*11,因为统计边缘坐标周围8坐标时需要用到。printf("****** 0.退出游戏 *****\n");printf("****** 1.扫雷游戏 *****\n");printf("------扫雷游戏------\n");
2024-01-20 20:34:56
911
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人