链表
文章平均质量分 68
链表刷题
gyjllll
这个作者很懒,什么都没留下…
展开
-
链表总结篇
链表的一大问题就是操作当前节点必须要找前一个节点才能操作。这就造成了,头结点的尴尬,因为头结点没有前一个节点了。每次对应头结点的情况都要单独处理,所以使用虚拟头结点的技巧,就可以解决这个问题。203. 移除链表元素-CSDN博客24. 两两交换链表中的节点(中等)-CSDN博客707. 设计链表(中等)-CSDN博客这是练习链表基础操作的非常好的一道题目,考察了:206. 反转链表-CSDN博客两种反转的方式,迭代法和递归法。递归法比较绕,如果迭代还写不明白,递归基本也写不明白了。可以先通过迭代法,彻底弄清原创 2023-11-30 10:32:15 · 387 阅读 · 0 评论 -
142. 环形链表 II(中等)
给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(如果pos是-1,则在该链表中没有环。pos,仅仅是为了标识链表的实际情况。链表。返回索引为 1 的链表节点链表中有一个环,其尾部连接到第二个节点。返回索引为 0 的链表节点链表中有一个环,其尾部连接到第一个节点。返回 null链表中没有环。原创 2023-11-30 10:11:44 · 919 阅读 · 0 评论 -
160. (面试题 02.07).相交链表
如果 a≠b,则指针 pA 会遍历完链表 headA,指针 pB 会遍历完链表 headB,两个指针不会同时到达链表的尾节点,然后指针 pA 移到链表 headB 的头节点,指针 pB 移到链表 headA 的头节点,然后两个指针继续移动,在指针 }pA 移动了 a+c+b 次、指针 pB 移动了 b+c+a次之后,两个指针会同时到达两个链表相交的节点,该节点也是两个指针第一次同时指向的节点,此时返回相交的节点。从各自的表头开始算起,链表 A 为 [1,9,1,2,4],链表 B 为 [3,2,4]。原创 2023-11-29 23:07:26 · 747 阅读 · 0 评论 -
19. 删除链表的倒数第 N 个结点(中等)
目的就是将倒数第n个位置确定出来,因此用两个指针去遍历,让一个先走,另一个后走,错开步伐,最终慢的找到最终位置。最后不要忘了手动删除指针节点(c++)给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。原创 2023-11-28 23:03:14 · 352 阅读 · 0 评论 -
24. 两两交换链表中的节点(中等)
最后需更新cur,cur的位置应该在要交换的节点的前一位,因此cur=cur->next->next,也就是现在1的位置。循环条件则是让cur指向的后两个节点都不为空,这样才能交换。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。还是要使用虚拟头节点,要不然每次针对头结点(没有前一个指针指向头结点),还要单独处理。要注意,进行这三个步骤时要建立临时变量存取指针,交换的时候会用到。原创 2023-11-28 22:09:23 · 331 阅读 · 0 评论 -
206. 反转链表
这里的递归就是对前序节点和当前节点进行操作,也就是pre和cur,因此当cur为空指针时,返回pre即可。为什么要保存一下这个节点呢,因为接下来要改变 cur->next 的指向了,将cur->next 指向pre ,此时已经反转了第一个节点了。最后,cur 指针已经指向了null,循环结束,链表也反转完毕了。之前链表的头节点是元素1, 反转之后头结点就是元素5 ,这里并没有添加或者删除节点,仅仅是改变next指针的方向。首先定义一个cur指针,指向头结点,再定义一个pre指针,初始化为null。原创 2023-11-28 15:36:22 · 358 阅读 · 0 评论 -
707. 设计链表(中等)
需要在类里面先定义好链表头节点和链表大小两个变量,并且要创建一个链表结构体,val和next构建好,然后在链表构造函数里把头节点和链表大小进行初始化赋值,链表头节点则继续采用虚拟头节点的方式,赋值成空指针0。以指示链表中的上一个节点。假设链表中的所有节点下标从。你可以选择使用单链表或者双链表,设计并实现自己的链表。另外删除或增加时,不要忘记更新链表的尺寸size变量。是指向下一个节点的指针/引用。如果是双向链表,则还需要属性。原创 2023-11-27 23:24:18 · 358 阅读 · 0 评论 -
203. 移除链表元素
要注意,最开始设置虚拟头节点时,让dummyNode的next指向head,但同时还要设一个当前指针cur赋值成dummyNode,cur是用来接下来的循环遍历,不断更新改变,如果用dummyNode进行操作,那么会造成没有可以返回的头节点了,都跑到最后面了,而只剩输入的head根本全程没有对head进行操作,因此要设置两个指针,一个dummyNode,一个cur。这里来给链表添加一个虚拟头结点为新的头结点,此时要移除这个旧头结点元素1。,这样原链表的所有节点就都可以按照统一的方式进行移除了。原创 2023-11-27 22:17:56 · 317 阅读 · 0 评论