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

相关推荐
SuperByteMaster几秒前
__set_MSP 和__set_MSPLIM 接口区别
c语言
CS创新实验室1 小时前
NumPy数组的C风格和Fortran风格
c语言·开发语言·numpy
:-)3 小时前
算法-希尔排序
数据结构·算法·排序算法
薄情书生4 小时前
基于51单片机的电子钟设计(LCD12864显示 + DS1302)
c语言·51单片机·protues
半条-咸鱼4 小时前
【FreeRTOS】核心原理与实战速查手册
c语言·操作系统·rtos
白帽小阳4 小时前
Typora插件开发指南:打造专属IDE式写作环境
c语言·网络·python·网络安全·github·pygame·护网行动
ysu_031415 小时前
06 | 200个单元测试C项目也能TDD
c语言·单元测试·tdd
罗超驿18 小时前
2.算法效率的核心密码:时间复杂度和空间复杂度详解
java·数据结构·算法
:-)18 小时前
算法-堆排序
数据结构·算法·排序算法
j7~21 小时前
【数据结构初阶】顺序表增删查改代码实现--详解
数据结构·顺序表·动态顺序表·静态顺序表