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

相关推荐
sin_hielo3 小时前
leetcode 2483
数据结构·算法·leetcode
sevenez3 小时前
Vibe Coding 实战笔记:从“修好了C坏了AB”到企业级数据库架构重构
c语言·笔记·数据库架构
大头流矢4 小时前
归并排序与计数排序详解
数据结构·算法·排序算法
一路往蓝-Anbo4 小时前
【第20期】延时的艺术:HAL_Delay vs vTaskDelay
c语言·数据结构·stm32·单片机·嵌入式硬件
就不掉头发5 小时前
I/O复用
运维·服务器·c语言·开发语言
ComputerInBook8 小时前
函数调用栈帧分析(Windows平台)
c语言·windows·编译原理·汇编语言·c++语言
SystickInt9 小时前
C语言 UTC时间转化为北京时间
c语言·开发语言
黎雁·泠崖9 小时前
C 语言动态内存管理进阶:常见错误排查 + 经典笔试题深度解析
c语言·开发语言
梭七y10 小时前
【力扣hot100题】(103)移动零
数据结构·算法·leetcode
山上三树10 小时前
柔性数组(C语言)
c语言·开发语言·柔性数组