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

相关推荐
zfxwasaboy7 小时前
DRM KMS 子系统(4)Planes/Encoder/Connector
linux·c语言
暮色_年华7 小时前
随想 2:对比 linux内核侵入式链表和 STL 非侵入链表
linux·c++·链表
极客代码8 小时前
深入解析C语言中的函数指针:原理、规则与实践
c语言·开发语言·指针·状态机·函数·函数指针
敲皮裤的代码8 小时前
《C语言》分支和循环(下)
c语言
喵了meme9 小时前
c语言经验分享
c语言·开发语言
晚风吹长发9 小时前
初步了解Linux中的动静态库及其制作和使用
linux·运维·服务器·数据结构·c++·后端·算法
SWAGGY..10 小时前
数据结构学习篇(10)--- 二叉树基础oj练习
数据结构·学习
千谦阙听10 小时前
双链表:比单链表更高效的增删查改
数据结构·链表·visual studio
xie_pin_an11 小时前
从二叉搜索树到哈希表:四种常用数据结构的原理与实现
java·数据结构
Frank Castle12 小时前
【C语言】详解C语言字节打包:运算符优先级、按位或与字节序那些坑
c语言·开发语言