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

相关推荐
苏纪云14 小时前
数据结构期中复习
数据结构·算法
Tracy-2214 小时前
广东专升本计算机C语言
c语言·开发语言
初听于你14 小时前
Java五大排序算法详解与实现
数据结构·算法·排序算法
多多*14 小时前
牛客周赛 Round 117 ABCDE 题解
java·开发语言·数据结构·算法·log4j·maven
熬夜敲代码的小N14 小时前
仓颉ArrayList动态数组源码分析:从底层实现到性能优化
数据结构·python·算法·ai·性能优化
大白的编程日记.15 小时前
【高阶数据结构学习笔记】高阶数据结构之B树B+树B*树
数据结构·笔记·学习
ゞ 正在缓冲99%…16 小时前
leetcode1547.切棍子的最小成本
数据结构·算法·leetcode·动态规划
2401_8414956416 小时前
【LeetCode刷题】移动零
数据结构·python·算法·leetcode·数组·双指针法·移动零
hn小菜鸡17 小时前
LeetCode 153.寻找旋转排序数组中的最小值
数据结构·算法·leetcode
liu****17 小时前
12.线程同步与互斥
linux·数据结构·c++·算法·1024程序员节