- 博客(27)
- 收藏
- 关注
原创 数据结构---还不懂栈和队列,来看这篇收获满满
一:栈(Stack)1.1:概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。就比如给枪上子弹,你先上的已经被后上的挤入弹夹深处了,先打出的子弹一定是后上的子弹。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据在栈顶。注意:栈只能在栈顶进行插入和删除以及元素的访问操作 不能在任意位
2021-11-21 10:52:21
942
2
原创 学会检测入栈和出栈的合法性(验证入栈和出栈的次序是否合理)
学会检测入栈和出栈的合法性(验证入栈和出栈的次序是否合理)例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(这两个序列的长度是相等的)
2021-11-19 18:22:29
1094
1
原创 初始集合框架也太重要了,数据结构必备
一:什么是集合框架Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes 。其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索 retrieve 、管理 manipulate ,即平时我们俗称的增删查改 CRUD。类和接口总览二:集合框架的重要性开发中的使用使用成熟的..
2021-11-17 20:56:32
916
1
原创 深究结点内部存放元素类型不同的区别
对象是一个实体,比如说我是个人,那我就是实实在在存在的。我的姓名就可以理解成引用,因为我的姓名与我的人对应。引用:放对象的地址。对象:实实在在存在的一块内存空间。 public static void main(String[] args) { Node<String> node1 = new Node<>("1111"); Node<String> node2 = new Node<>("2222"); nod...
2021-11-16 10:19:07
683
2
原创 力扣---链表OJ题
一:给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点。示例1:示例2:输入:head=[ ],val = 1输出:[ ]示例3:输入:head=[7,7,7,7],val=7输出:[ ]二:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。统计链表中总结点的个数size取size的一半让一个引用从链表的起始位置往后遍历,..
2021-11-16 09:25:51
913
2
原创 数据结构---链表
一:概念及结构1.1:概念链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。顺序表:底层是一段连续空间---物理上是连续的,逻辑上也是连续的。链表:物理上不一定连续,逻辑连续。链表中的元素存储在一个一个的节点当中。1.2:结构1.2.1:单向或者双向1.2.2:带头或者不带头1.2.3:循环或者非循环1.2.4:无头单向非循环链表1.2.5:无头双向链表...
2021-11-14 11:50:27
1431
原创 如何将单链表逆序打印?
方式一:1.从前往后将链表遍历一遍,然后将每个结点中的值域保存到ArrayList中。2.将ArrayList中的元素从后往前输出。这种方法时间复杂度为O(N)方式二:递归调用:
2021-11-14 11:47:50
565
原创 注意:List使用期间不要用成裸类型
List<Integer> list1 = new ArrayList<>();List1.add(1);List1.add("111"); //报错//List---裸类型List List2 = new ArrayList();List2.add(1);List2.add("111");List是泛型,所以在实例化对象期间,必须告诉List要放什么类型的元素。虽然裸类型编译期间不会报错,但是它插入什么类型的元素都可以,它就不会进行类型的检测,用的时候就.
2021-11-14 10:00:14
244
原创 数据结构---继续走进Linked List
一:ArrayList的缺陷ArrayList底层使用数组来存储元素:由于其底层是一段连续空间,当在ArrayList任意位置插入或者删除元素时,就需要将后序元素整体往前或者往后搬移,时间复杂度为O(n),效率比较低,因此ArrayList不适合做任意位置插入和删除比较多的场景。因此:java集合中又引入了LinkedList,即链表结构。二:LinkedList的使用LinkedList的底层是双向链表结构(不仅知道后面的在哪,还知道前面的在哪)由于链表没有将元素存储在连续的空间中,元
2021-11-12 23:51:07
505
2
原创 java---搞懂时间复杂度
我们在日常生活中如何判断一个算法的好坏呢?那就得先来研究研究算法效率了。一:算法效率算法效率分析分为两种:第一种是时间效率(时间复杂度),第二种是空间效率(空间复杂度)。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间。在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度,对于现代计算机,内存已经比较足够,所以对算法效率影响最大的是时间复杂度。二:时间复杂度2....
2021-11-08 21:06:22
240
3
原创 java---认识String类
一:常用方法1.1 字符串构造注意:1. String是引用类型,内部并不存储字符串本身。2. 在Java中“”引起来的也是String类型对象。// 打印"hello"字符串(String对象)的长度System.out.println("hello".length());1.2 String对象的比较1. ==比较是否引用同一个对象注意:对于内置类型,==比较的是变量中的值;对于引用类型==比较的是引用中的地址。2. boolean equals(Obj.
2021-11-06 10:08:50
139
1
原创 【数据结构】二叉树的小知识
一:概念(了解)1.1:树的结构树是递归定义的结点的度:一个结点含有子树的个数称为该结点的度; 如上图:A的度为3树的度:一棵树中,所有结点度的最大值称为树的度; 如上图:树的度为3叶子结点或终端结点:度为0的结点称为叶结点; 如上图:J、F、H、I...等节点为叶结点双亲结点或父结点:若一个结点含有子结点,则这个结点称为其子结点的父结点; 如上图:A是B的父结点孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子结点; 如上图:B是A的孩子结点根结点:一棵树中,没
2021-11-03 20:45:54
2037
2
原创 java【抽象类和接口】
一:抽象类1.1:概念如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类举例:Dog类和Cat类继承Animal类,狗和猫都是具体的动物,因此bark()方法可以实现,但Animal不是一个具体的动物,因此其内部的bark()方法无法具体实现1.2:抽象类语法在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法 不用给出具体的实现体。注意:抽象类也是类,内部可以包含普通方法和属性,甚.
2021-11-02 21:53:18
138
1
原创 java【多态】
一:概念同一件事情,发生在不同对象身上,就会产生不同的结果。举例子:动物吃东西,狗吃肉,猫吃鱼二:分类三:实现多态条件四:重写五:向下转型和向上转型
2021-10-29 16:27:54
165
1
原创 java【继承】
一:继承1:概念继承机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性 的基础上进行扩展,增加新功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程。继承主要解决的问题是:共性的抽取,实现代码复用2:继承的语法在Java中如果要表示类之间的继承关系,需要借助extends关键字修饰符 class 子类 extends 父类{ //...}注意:1. 子类会将父类中的成员变量或者成员方法
2021-10-28 17:18:08
218
原创 java【封装+static】
一:封装1.封装的概念将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。举例:对于电脑这样一个复杂的设备,提供给用户的就只是:开关机、通过键盘输入,显示器,USB插孔等。但实际上:电脑真正工作的却是CPU、显卡、内存等一些硬件元件。因此计算机厂商在出厂时,在外部套上壳子,将内部实现细节隐藏起来,仅仅对外提供开关机、鼠标以及键盘插孔等,让用户可以与计算机进行交互即可。2.访问限制符Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据
2021-10-27 11:33:34
267
1
原创 java【类和对象】+对象初始化
一:什么是面向对象1.面向对象面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。面向对象的编程的主要思想是把构成问题的各个事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述一个事物在解决问题的过程中经历的步骤和行为。对象作为程序的基本单位,将程序和数据封装其中,以提高程序的重用性,灵活性和可扩展性。类是创建对象的模板,一个类可以创建多个对象。对象是类的实例化。2.
2021-09-20 18:46:42
372
1
原创 【java】----数组的认识
一:数组的概念数组数组是是相同类型元素的一个集合,数组在底层的存储空间是连续的。所有元素的类型是相同的存储元素的空间是连续的每个空间都有自己的编号——数组的下标数组的创建T[] 数组名 = new T[N];T: 数字中存储元素的类型T[]:表示数组的类型数组名:按小驼峰方式命名new:用来申请数组空间的一个关键字N: N是一个常量,表示数组当中的空间个数int[] array1 = new int[10]; //创建一个可以容纳10个int类型..
2021-08-26 15:53:05
298
2
原创 【java】---递归
递归的概念一个方法在执行的过程中调用自身。核心:如何将原问题转换为子问题。使用场景通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解递归的实现条件1.必须要有递归的出口2.对原问题进行拆分,拆分成一个个小问题,而且小问题与大问题的解法相同。递归的常见表达方式1.问题本身就是递归的2.数据结构是递归的3.概念是递归的求5的阶乘按顺序打印一个数字的每一位...
2021-08-25 13:59:36
120
1
原创 【java】——方法的使用
目录一:方法的概念及使用1.什么是方法2.方法的调用【方法的调用过程】【实参与形参的关系】【交换两个整型变量】二:方法的重载【方法签名】一:方法的概念及使用1.什么是方法方法就是一段用来完成特定功能的代码片段,类似于c语言中的“函数”。语法格式://方法定义修饰符 返回值类型 方法名字([参数类型 形参 ...]){ 方法体代码; [return 返回值];}/*1.修饰符---初次学习固定搭配 public stati
2021-08-22 17:00:01
136
1
原创 java逻辑控制语句
一:顺序结构按照代码书写的顺序一步步进行二:分支结构1.if语句语法格式1:if(布尔表达式){ 语句1}举例:如果考试考了60分以上,就及格了。语句格式2:if(布尔表达式){ 语句1}else{ 语句2}举例:如果考试考到90分以上就奖励,90分以下就再接再厉。语句格式3:if(布尔表达式){ 语句1}else if{ 语句2}else{ 语句3}举例:根据年龄,来打引出当前年...
2021-08-19 16:43:54
211
2
原创 JAVA自增自减运算符
++是给变量的值加一- - 是给变量的值减一以++为例,如果单独使用,则前置后置没有区别;如果混合使用,前置++先+1,然后再使用变量+1之后的值,后置++先试用变量原来的值,再给变量+1。只有变量才能使用自增自减运算符,常量不允许使用。...
2021-08-14 15:36:00
113
3
原创 初始JAVA(HelloWorld)
java中的helloworld与c语言的区别很大java程序的基本组成单元是类,类中又可包括属性和方法两部分,而每一个应用程序都应该包含一个main()方法,含有main()方法的类称之为主类。在一个源文件中只能有一个public修饰的类,而且源文件名字必须与public修饰的类名字相同。...
2021-08-12 15:29:33
80
2
原创 来波自我介绍
我是一名来自陕西的的大二学生,未来想要从事编程相关工作。以下是我的编程目标,以及如何学习等。1.编程的目标熟练掌握c语言,c++,java等
2021-06-14 19:25:15
1165
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人