【数据结构】单链表练习(有环)

1.判断是否是环形链表

141. 环形链表 - 力扣(LeetCode)

复制代码
bool hasCycle(struct ListNode *head) 
{
    struct ListNode *fast,*slow;
    fast=slow=head;
    while(fast&&fast->next)
    {
        fast=fast->next->next;
        slow=slow->next;

        if(fast==slow)
        return true;
    }
    return false;
}

2.环形链表2.0

142. 环形链表 II - 力扣(LeetCode)

思考:

slow走的路程:L+X

fast走的路程:L+N*C+X

2*(L+X)=L+N*C+X

L=N*C-X

结论:一个指针从相遇点开始走,另一个指针从起始点开始走,他们会在入口点相遇

复制代码
struct ListNode *detectCycle(struct ListNode *head) 
{
    struct ListNode *fast,*slow;
    fast=slow=head;
    while(fast&&fast->next)
    {
        fast=fast->next->next;
        slow=slow->next;

        if(fast==slow)
        {
            struct ListNode *meet=slow;
            struct ListNode *start=head;

             while(meet!=start)
            {
            start=start->next;
            meet=meet->next;
            }
            return meet;
        }
    }
    return NULL;
}

相关推荐
CCPC不拿奖不改名35 分钟前
数据处理与分析:pandas基础+面试习题
开发语言·数据结构·python·面试·职场和发展·pandas
宵时待雨1 小时前
数据结构(初阶)笔记归纳2:顺序表的实现
c语言·数据结构·笔记·算法
漫随流水2 小时前
leetcode算法(101.对称二叉树)
数据结构·算法·leetcode·二叉树
2301_764441332 小时前
python实现罗斯勒吸引子(Rössler Attractor)
开发语言·数据结构·python·算法·信息可视化
漫随流水3 小时前
leetcode算法(559.N叉树的最大深度)
数据结构·算法·leetcode·二叉树
ホロHoro4 小时前
数据结构非线性部分(二)review
linux·服务器·数据结构
菜鸟233号4 小时前
力扣474 一和零 java实现
java·数据结构·算法·leetcode·动态规划
xlp666hub4 小时前
链表与它在 Linux 内核中的实现
linux·数据结构
super杨某人4 小时前
算法十日谈:双指针
数据结构·算法
好奇龙猫4 小时前
【大学院-筆記試験練習:线性代数和数据结构(7)】
数据结构·线性代数