判断链表是否有回环 C


主要是思维,用快慢指针好一些,就是一个指针跑的快一个指针跑的慢,如果有回环,那么快的指针先完成一圈后会与慢指针再次相遇

c 复制代码
bool Node_ifhasCycle(struct Node *head) {
    Node* t = head;
    Node* q = head;

    while(t != NULL && q != NULL && q->next != NULL){
        t = t->next;
        q = q->next->next;

        if(t == q) return true;
    }

    return false;
}

一定要注意就是先判断指针是不是空再执行->next操作

相关推荐
玖玥拾6 小时前
C/C++ 基础笔记(十三)继承
c语言·c++·继承
退休倒计时8 小时前
【每日一题】LeetCode 53. 最大子数组和 TypeScript
数据结构·算法·leetcode·typescript
2601_961875248 小时前
法考资料2026|全套|资料已整理
数据结构·算法·链表·贪心算法·eclipse·线性回归·动态规划
2601_950526439 小时前
程序设计语言(C)
c语言·数据类型·实验教学·编译预处理·程序设计语言(c)
不会C语言的男孩9 小时前
Linux 系统编程 · 第 4 章:文件属性与元数据
linux·c语言·开发语言
C语言小火车9 小时前
什么时候用智能指针?什么时候用裸指针?
c语言·c++·学习·指针
玖玥拾10 小时前
C/C++ 基础笔记(十二)友元、运算符重载
c语言·c++·运算符重载·友元
dtq042411 小时前
C语言刷题数组5,6(求平均值,求最大值)
c语言·数据结构·算法
洛水水12 小时前
【力扣100题】81.寻找两个正序数组的中位数
数据结构·算法·leetcode
石一峰69912 小时前
C 语言函数设计模式实战经验
c语言·开发语言·设计模式