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

相关推荐
爱读书的小胖9 小时前
Codewars:Rot13(C)解题分析
c语言·开发语言
by209999 小时前
哈希表——快速找到数据:冲突、删除与扩容的实现
数据结构·c++·哈希算法·散列表
Code_Solitude10 小时前
c语言:关于qsoet函数知识点
c语言·数据结构·算法
鸽鸽程序猿10 小时前
【项目】【在线判题系统】c端:竞赛报名
c语言·开发语言
Pniubi11 小时前
快速排序(力扣基础)(递归)
java·数据结构·算法
H.莓飛11 小时前
【Linux】自主 Shell
linux·运维·服务器·c语言·开发语言·visual studio
爱读书的小胖12 小时前
Codewars:Last digit of a large number(C)解题分析
c语言·开发语言·r语言
lojox12 小时前
C++ 手写 STL list(双向循环链表)原理剖析与实现
c++·链表·list
想做小南娘,发现自己是女生喵12 小时前
第二周学习文档 Linux C 文件操作
linux·c语言·学习
Bluetooth73012 小时前
c语言变量的存储类别
c语言