链表-链表有环问题

作者: 茶还是咖啡 | 来源:发表于2020-03-06 13:07 被阅读0次

1. 判断一个单向链表是否有环

有环的链链表大概张这样


有环的链表和普通的链表的区别就是尾指针指向了链表中的某一个节点,这会导致我们在遍历链表的时候无法遍历完毕,因为链表中不存在尾指针了,最终会无线循环在链表的环状结构上。
钟表我们都知道,时针和分针的速度不同但是两个指针总会相遇,判断一个链表是否有环我们也可以使用两个指针p,q,p指针的每次的步长为两个节点,q指针的步长为一个节点。如果链表中存在环状结构,那么这两个指针就一定会相遇,如果不存在环状结构,p指针就一定会走到链表的尽头。

code

如果链表有环,返回环中的其中一个节点,如果无环,返回NULL

ElemSN* judgeListHaveCircle(ElemSN *head){
    if(NULL==head){
        return NULL;
    }
    ElemSN *p=head,*q=head;
    while(p!=NULL&&p!=q){
        if(p->next!=NULL&&p->next->next!=NULL){
            p=p->next->next;
        }else{
            return NULL;
        }
        q=q->next;
    }
    return p;
}

2. 链表有环,找到链表的入口节点

  1. 先找到环中的任意一个节点p,然后q绕着环走一圈用于计算环的节点个数n,
  2. 两个指针链表的头部开始,一个指针先走n个节点,然后另一个指针再走,两个指针相遇时,即为环的入口节点

code

node 参数为链表环中的任意一个节点,即上面那个函数计算的节点地址。

ElemSN* getCircleListStartNode(ElemSN *head,ElemSN *node){
    if(head==NULL||node==NULL){
        return NULL;
    }
    ElemSN *p=node,*q=node;
    int n=1;
    do{
        q=q->next;
        n++;
    }while(p!=q);
    p=q=head;
    while (n) {
        n--;
        p=p->next;
    }
    while (p!=q) {
        p=p->next;
        q=q->next;
    }
    return p;
}

相关文章

  • 链表算法面试?看我就够了!——链表中存在环问题

    链表中存在环问题 3.1 判断链表是否有环 单链表中的环是指链表末尾的节点的 next 指针不为 NULL ,而是...

  • 1.数据结构-链表问题

    链表相关问题 删除节点 链表去重 有环链表 反转链表 链表排序 链表相交 其他问题 面试题 02.03. 删除中间...

  • 链表-链表有环问题

    1. 判断一个单向链表是否有环 有环的链链表大概张这样 有环的链表和普通的链表的区别就是尾指针指向了链表中的某一个...

  • 链表有环问题

    问题1: 给定一个链表,判断这个链表是否有环 原理:使用快慢指针法,如果链表有环,则必定存在两个指针相等. 问题2...

  • c语言判断链表是否有环

    1.问题描述 判断给定的链表中是否有环。如果有环则返回true,否则返回false。 数据范围:链表长度 ,链表中...

  • 链表

    单向链表 链表反转 判断是否有环,找链表的中间节点 快慢指针 找环的入口(求两个链表的交点可以转化成这个问题) p...

  • 链表

    链表问题通常可以在链表头部加入一个哑节点来减少讨论的情况。 1,翻转链表 递归 非递归 2,一个链表是否有环,环入...

  • 力扣算法 - 环形链表(判断是否有环)

    环形链表 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表...

  • leetcode -141. 环形链表 -https://lee

    环形链表 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表...

  • leetcode解题思想--141. 环形链表(Linked L

    问题描述 给定一个链表,判断链表中是否有环。 leetcode原题链接 问题分析 朴素思维:从头遍历链表,每遍历到...

网友评论

    本文标题:链表-链表有环问题

    本文链接:https://www.haomeiwen.com/subject/wbebrhtx.html