当前位置:   article > 正文

寻找链表中的环的入口(C语言)_c语言查询链表中循环开始的节点

c语言查询链表中循环开始的节点

声明:题目来源:力扣(LeetCode

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 NULL 。

题目链接:环形链表II

说明:不允许修改给定的链表。
示例可参考博客:判断链表中是否有环,解法与该题类似,需要先判断是否有环,若有环才能进行寻找入环节点的步骤,否则就直接返回NULL了。
那如何寻找入环节点呢,方法也不复杂,与第4题类似。在判断出链表有环之后,计算出环的长度,再设置快慢两个指针,快指针先走一个环的长度,慢指针再和快指针同时走,两者相遇的位置即为环的入口。
参考代码如下:

struct ListNode *detectCycle(struct ListNode *head) {
   
    if(head == NULL){
   
        return NULL;
    }
    struct ListNode *pre = head;
    struct ListNode *lag = head;
    while(pre){
   
        lag 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/64542
推荐阅读
相关标签
  

闽ICP备14008679号