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

相关推荐
zore_c1 分钟前
【C语言】数据在内存中的存储(超详解)
c语言·开发语言·数据结构·经验分享·笔记
程序员-周李斌7 分钟前
ArrayList 源码深度分析(基于 JDK 8)
java·开发语言·数据结构·算法·list
达不溜先生 ୧⍢⃝୨10 分钟前
循环赛日程表问题
c语言·算法·递归·分治·循环赛日程表·动态二维数组
不知所云,25 分钟前
2.windows c/c++ 编译器安装, mingw和clang
c语言·c++·windows·mingw·clang·c编译器
LCG米32 分钟前
工业自动化嵌入式开发实战:基于ARM7与μC/OS-II的焊接机控制系统设计与实现
运维·c语言·自动化
爪哇部落算法小助手34 分钟前
爪哇周赛 Round 3
数据结构·c++·算法
迷途之人不知返1 小时前
二叉树的链式结构
数据结构
Yue丶越1 小时前
【C语言】内存函数
c语言·开发语言
不会c嘎嘎1 小时前
【数据结构】红黑树详解:从原理到C++实现
开发语言·数据结构
吃着火锅x唱着歌1 小时前
LeetCode 2364.统计坏数对的数目
数据结构·算法·leetcode