判断链表是否有回环 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操作

相关推荐
Vect__8 分钟前
Go 数据结构 slice 深度剖析
开发语言·数据结构·golang
青山木23 分钟前
Hot 100 --- LRU 缓存
java·数据结构·算法·leetcode·链表·缓存·哈希
十月的皮皮36 分钟前
C语言学习学习笔记20260704-中缀表达式求值(双栈法)
c语言·笔记·学习
wuminyu1 小时前
markword在高并发场景下变化剖析
java·linux·c语言·jvm·c++
星夜夏空991 小时前
C++学习(1) ——C与C++
c语言·c++·学习
wuyk5551 小时前
25. 函数指针表:用查表替代 switch-case,打造高效可维护的嵌入式状态机
c语言·stm32·单片机·mcu·51单片机
剑挑星河月2 小时前
35.搜索插入位置
java·数据结构·算法·leetcode
闪电悠米2 小时前
力扣hot100-438.找到字符串中所有字母异位词-固定长度滑动窗口详解
linux·服务器·数据结构·算法·leetcode·滑动窗口·力扣hot100
人道领域2 小时前
【LeetCode刷题日记】51.N皇后
数据结构·算法
时间的拾荒人12 小时前
C语言字符函数与字符串函数完全指南
c语言·开发语言