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

相关推荐
LuminousCPP8 分钟前
C 语言动态内存管理全解析:从基础函数到柔性数组与内存分区
c语言·经验分享·笔记·学习·柔性数组
Lazionr28 分钟前
【栈与队列经典OJ】
c语言·数据结构
夏日听雨眠31 分钟前
数据结构(哈希函数)
数据结构·算法·哈希算法
诙_40 分钟前
C++数据结构--B树,B+树,B*树
数据结构·b树
_深海凉_1 小时前
LeetCode热题100-回文链表
算法·leetcode·链表
星恒随风1 小时前
C语言链表详解:从单链表到双向链表
c语言·开发语言·链表
bnmoel1 小时前
数据结构深度剖析顺序表:结构、扩容与增删查改全解析
c语言·数据结构·算法·顺序表
Liangwei Lin1 小时前
LeetCode 45. 跳跃游戏 II
数据结构·算法·leetcode
枕星而眠1 小时前
一篇吃透 C++ 核心基础:初始化、引用、指针、内联、重载、右值引用
开发语言·数据结构·c++·后端·visual studio
Season4501 小时前
C/C++的类型转换
c语言·开发语言·c++