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

相关推荐
l1t9 小时前
利用DeepSeek实现服务器客户端模式的DuckDB原型
服务器·c语言·数据库·人工智能·postgresql·协议·duckdb
l1t11 小时前
利用美团龙猫用libxml2编写XML转CSV文件C程序
xml·c语言·libxml2·解析器
散11216 小时前
01数据结构-01背包问题
数据结构
消失的旧时光-194317 小时前
Kotlinx.serialization 使用讲解
android·数据结构·android jetpack
Gu_shiwww17 小时前
数据结构8——双向链表
c语言·数据结构·python·链表·小白初步
你怎么知道我是队长18 小时前
C语言---循环结构
c语言·开发语言·算法
苏小瀚18 小时前
[数据结构] 排序
数据结构
程序猿编码19 小时前
基于 Linux 内核模块的字符设备 FIFO 驱动设计与实现解析(C/C++代码实现)
linux·c语言·c++·内核模块·fifo·字符设备
_不会dp不改名_20 小时前
leetcode_21 合并两个有序链表
算法·leetcode·链表
mark-puls20 小时前
C语言打印爱心
c语言·开发语言·算法