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

相关推荐
find1star2 小时前
LeetCode 141:环形链表
java·算法·leetcode·链表
heima20163 小时前
长期复盘:餐饮店活动拓客链接的行业现状与使用困境
链表
青山木6 小时前
Hot 100 --- 数组中的第K个最大元素
java·数据结构·算法·排序算法
wuyk5557 小时前
12.归并排序:分治思想的稳定排序算法
开发语言·数据结构·算法·排序算法
Chester_199910 小时前
CSP202312C.树上搜索
开发语言·数据结构·c++·蓝桥杯·stl
热心网友俣先生11 小时前
2026国赛C题:五年命题规律与预测
java·c语言·前端·数学建模
专注仿真11 小时前
RabbitMQ消息队列实战项目
数据结构·rabbitmq
wuminyu12 小时前
Linux内核线程调度与虚拟线程调度机制系统级深度剖析
java·linux·c语言·jvm·c++
血小板要健康12 小时前
队列 + 宽搜(BFS):二叉树层序遍历 算法总结
java·数据结构·笔记·算法·leetcode·宽度优先
Felven13 小时前
B. Deja Vu
数据结构·算法