![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链表
文章平均质量分 64
嘻嘻哈哈樱桃
这个作者很懒,什么都没留下…
展开
-
反转链表力扣--206
一直移动一直移动直到最后curr指向null了,pre指向尾指针,此时就不用继续了,因为我们不需要让这个null空指针再指向头指针了。首先需要定义一个curr,用来指向头指针,反转之后头指针就变成尾指针了,尾指针会指向null,所以在头指针的前面我定义了一个pre,让他初始化等于null。如果3,4互换位置的话,相当于curr先等于了它原来next的值,此时curr已经改变了,他改变以后才动pre,这是错误的。此时curr的next就是指向了pre的位置,所以这是第二步。改变指针next的指向就可以了。原创 2024-04-08 20:38:09 · 243 阅读 · 1 评论 -
两两交换链表中的节点力扣--24
在while循环中,如上图,这个是一个偶数的链表,然后进行完这一轮以后就temp就指向了4,然后由于是两个交换,这样就正好完成,我们发现这种情况的特征是它后面的指针是null,然而如果是奇数的话,相当于4后面还有一个5,但是5是单独的,没有人和他交换了,所以是第二种情况。经过步骤一以后,cur和1之间的箭头断了,无法表示1,所以我们想到用临时变量来存储它的值,即firstnode,同理,当2指向1以后,和3之间的箭头就断了,所以还需要另外一个变量temp去存储。while的两个条件能否交换?原创 2024-04-08 21:28:59 · 411 阅读 · 0 评论 -
环形链表力扣--142
定义一个快指针一个慢指针,让快指针一次走两个结点,慢指针一次走一个结点,如果有环的话快指针会先进入,然后满指针也进入,快指针走的快,一直在环里,所以一定会和慢指针相遇,所以这个可以用来判断是否有环。所以我们在相遇的点处设置一个l1,在头的部分设置l2 ,让他们移动相同距离,最终他们相遇的位置就是环的入口。,n为fast指针在环内走了n圈才遇到slow指针, (y+z)为 一圈内节点的个数A。因为要找环形的入口,那么要求的是x,因为x表示 头结点到 环形入口节点的的距离。,返回链表开始入环的第一个节点。原创 2024-04-09 09:46:11 · 559 阅读 · 0 评论 -
链表相交面试题
从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。若两链表 有 公共尾部 (即 c>0 ) :指针 A , B 同时指向「第一个公共节点」node。他是链表尾部相交,所以我们需要先得到两个链表的长度。后面为了方便分析判断,链表长的我们让他都为A。若两链表 无 公共尾部 (即 c=0) :指针 A , B 同时指向 null。在 B 中,相交节点前有 3 个节点。相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。如链表A+链表B=链表C1。原创 2024-04-09 08:47:23 · 823 阅读 · 0 评论 -
删除链表的倒数第n个结点力扣--19
应该使用双指针,首先创建一个虚拟头节点,然后再设置两个指针都指向这个虚拟头节点。移动fastnode,直到它找到第n个元素的后一个结点,此时同时移动fastnode和slownode,当dastnode指向末尾。假如让快指针移动n步的话,到最后slow指向的是要删除元素的前一个,所以为了方便,我们让fastnode移动n+1。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。原创 2024-04-09 08:08:34 · 194 阅读 · 0 评论 -
设计链表力扣--707
首先对于插入,要先创建一个新的节点,然后再把这个节点添加到链表当中,在添加的过程中,要先进行这个连接操作,就是先进行右边连接的箭头,再让左边的指向箭头指向这个新建的链表。然后进行操作的关键是找清楚到底是要curr还是curr.next这个问题。以指示链表中的上一个节点。假设链表中的所有节点下标从。你可以选择使用单链表或者双链表,设计并实现自己的链表。这道题都是链表的基础操作,需要多加练习。是指向下一个节点的指针/引用。如果是双向链表,则还需要属性。原创 2024-04-08 19:45:00 · 122 阅读 · 0 评论 -
链表--移除链表元素--力扣203
假如这个链表是1 1 1 1 1 1,然后恰好要删除元素的值也为1,如果是if的话就进行一次,而我们需要的是一直删除,所以while更合适。示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]情况二较为简单,直接遍历找到要删除的元素,使要删除元素的前一个值的下一个元素直接等于要删除的后一个元素。示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]分为两种情况:1.被移除的是头元素 2.被移除的不是头元素。原创 2024-04-08 18:25:43 · 318 阅读 · 2 评论