- 博客(20)
- 收藏
- 关注
原创 二叉树及基本操作详解
每棵子树的根结点有且只有一个前驱,可以有。:若一个结点含有子结点,则这个结点称为其子结点的父结点;1.有一个特殊的结点,称为根结点,根结点没有前驱结点。:一个结点含有的子树的根结点称为该结点的子结点;:以某结点为根的子树中任一结点都称为该结点的子孙。n个结点的二叉树,当且仅当其每一个结点都与深度为K。:一棵树中,所有结点度的最大值称为树的度;:一个结点含有子树的个数称为该结点的度;:具有相同父结点的结点互称为兄弟结点;:从根到该结点所经分支上的所有结点;:一棵树中,没有双亲结点的结点;
2024-08-04 01:03:46 474
原创 栈和队列之队列
只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为出队列:进行删除操作的一端称为入队列peek()获取队头元素int size()获取队列中有效元素个数检测队列是否为空E poll()出队列例题:设计你的循环队列实现。循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。
2024-07-23 20:03:10 1021
原创 栈和队列之栈
一种特殊的线性表,其。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO)的原则。即最先进去的数据会在最后面出来,以此类推。压栈:栈的插入操作叫做进栈压栈入栈,。出栈:栈的删除操作叫做出栈。。Stack()构造一个空的栈将e入栈,并返回eE pop()将栈顶元素出栈并返回E peek()获取栈顶元素int size()获取栈中有效元素个数检测栈是否为空。
2024-07-23 15:06:59 630
原创 LinkedList与双向链表实现 (下)
由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。遍历有三种方法,分别是for,foreach和Iterator。只需修改引用的指向,时间复杂度为。逻辑上连续,但物理上不一定连续。使用其他集合容器中元素构造。任意位置插入和删除频繁。的底层是双向链表结构。需要搬移元素,效率低。
2024-07-19 19:21:02 683
原创 环形链表 II
通过画图我们可以知道,假设他们在环内有相遇,此时slow走的路程为X+C-Y,假设fast走的路程为X+NC+C-Y,已知我们slow和fast速度相比是1:2,那么也就是说他们的路程比也是1:2,由此我们可以得到的等式:2*(X+C-Y) = X+NC+C-Y,化简得X = (N-1)C +Y;首先我们需要判断这个链表是否有环,如果没有环则返回null。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。,返回链表开始入环的第一个节点。,则在该链表中没有环。
2024-07-18 19:01:46 315
原创 链表的回文结构
对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。给定一个链表的头指针。
2024-07-18 15:31:22 140
原创 链表分割问题
给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。现有一链表的头指针 ListNode*大致可按以下图来进行解题。
2024-07-17 20:09:21 150
原创 链表的中间节点
该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。如果有两个中间结点,则返回第二个中间结点。,请你找出并返回链表的中间结点。链表只有一个中间结点,值为 3。
2024-07-17 15:52:35 171
原创 反转链表示例
此时我们相当于将0x13作为新的head,cur作为我们第二次要插入的,即进入循环。循环条件为当cur!首先我们需要自定义cur = head.next以及curNext = cur.next;然后我们再将cur的值变成curNext,也就是cur = curNext;此时我们要将0x13变成我们新的head,也就是head = cur。在我们进行反转链表时,首先我们需要把head的值置为null;,请你反转链表,并返回反转后的链表。
2024-07-17 15:26:11 225
原创 洗牌算法示例
示例:最简单的洗牌算法包括创建52张牌,并且三个人依次拿一张牌直到每个人都有五张牌。这是Card.java的源码。这是Demo.java的源码。
2024-07-15 19:30:09 208
原创 ArrayList与顺序表(上)
线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物 理上存储时,通常以数组和链式结构的形式存储。线性表是一种在实际中广泛使用的数据结 构,常见的线性表:顺序表、链表、栈、队列...的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表。不是线程安全的,在单线程下可以使用,在多线程中可以选择。然后是我自己对于这些代码的补充填写,仅供参考。是以泛型方式实现的,使用时必须要先实例化。
2024-07-11 17:01:28 367
原创 初识Java泛型
泛型,即“参数化类型”。它的本质是为了将类型参数化, 也就是说在泛型使用过程中,数据类型被设置为一个参数,在使用时再从外部传入一个数据类型;而一旦传入了具体的数据类型后,传入变量(实参)的数据类型如果不匹配,编译器就会直接报错。这种参数化类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。。从代码上讲,就是对类型实现了参数化。class泛型类名称类型形参列表//这里可以使用类型参数classClassNameT1T2, ...,Tnclass泛型类名称。
2024-07-10 22:17:50 239
原创 nextInt()、next()和nextLine()的用法和hasNextInt()的作用
nextInt(): it only reads the int value, nextInt() places the cursor(光标) in the same line after reading the input.(个人理解:nextInt()读取的是Int类型的数据,而对于提交所剩下"\n"还没有读取,因此如果用nextInt()读取后,再用nextLine()读取,读取到的是换行符)
2024-07-08 15:14:18 346
原创 编程语言初学者的自述
前文这是我发布的第一篇博客,用来自述和阐述自己未来几年的规划与目标,记录自己在编程学习中的点点滴滴,借助在CSDN上写博客以此来提高自己对知识掌握的程度,整理自己在学习时候的思路,分享自己的学习成果,期望能与大家一起共同进步~正文一.自我介绍虽然很想夸赞自己,但还是不得不承认我只是一个很普通的人。我是一名大二的学生,学校是双非一本,专业是电子商务。对于编程,仅仅只有在课堂上听老师讲述的理论而并没有很多次自身实践,也深刻感受到自己学习的不足,学的多而不精,最后也只能碌碌无为。在IT这个行业之
2022-10-15 23:10:53 462 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人