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

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;
}

相关推荐
stolentime10 分钟前
AT_arc182_a [ARC182A] Chmax Rush!题解
数据结构·c++·算法·动态规划
写后端的胖头鱼8 小时前
一文详解B+树原理(附场景+示例)
数据结构·b树
All for pursuit.11 小时前
【位运算-1】338.比特位计数
数据结构·c++·算法·leetcode
xxwl58513 小时前
数据结构知识点和代码实现总结(C语言实现)
c语言·开发语言·数据结构
mokongJ18 小时前
17 份异构销售数据的合并清洗方案:30 万行处理耗时 9.64 秒
数据结构
蛋蛋的就会顺顺的19 小时前
hot100——二叉树
java·数据结构·算法·leetcode·力扣
List<String> error_P21 小时前
freertos数据结构--链表
数据结构·链表
longlongzihan1 天前
LeetCode 128. 最长连续序列 —— 从排序到哈希集合
数据结构·c++·算法·leetcode·排序算法·哈希表
mmmmath_31 天前
二叉树の一些知识
数据结构·算法
程序员清风1 天前
数据类型转换与日期时间处理
数据结构·pandas