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

相关推荐
大侠归来6 分钟前
C语言素数判断:从入门到进阶
java·c语言·算法
H.莓飛30 分钟前
【数据结构】链表_OJ题
linux·数据结构·算法·链表
All for pursuit.37 分钟前
【回溯-4】46.全排列
数据结构·c++·算法·leetcode
大圣编蚕1 小时前
C语言核心知识复习:预处理、头文件、强制类型转换、错误处理、递归与内存管理
c语言·开发语言
anew___1 小时前
《从零手写操作系统 (21):用户态C运行时——从裸ELF到printf》
linux·服务器·c语言
HEJOO91 小时前
指针与结构体:C 语言进阶核心详解
c语言·开发语言·网络
Logic1012 小时前
关于汉诺塔问题的分析
c语言·算法·递归·函数·解题思路·递归函数·汉诺塔问题
水饺编程3 小时前
第1章:在 Windows 中安装 GCC 套件
c语言·汇编
7yewh3 小时前
SLAM 从视觉里程计到建图(6)
数据结构·人工智能·机器人·自动驾驶·嵌入式
程序员清风4 小时前
pandas 核心数据结构:Series 与 DataFrame
数据结构·pandas