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

相关推荐
仰泳的熊猫27 分钟前
题目1549:蓝桥杯算法提高VIP-盾神与积木游戏
数据结构·c++·算法·蓝桥杯
xiaoccii34 分钟前
堆(顺序结构)
c语言
宫瑾1 小时前
VSCode使用C/C++ extensions开发STM32,添加头文件路径
c语言·c++·vscode
王老师青少年编程1 小时前
csp信奥赛C++之摩尔投票算法详解
数据结构·c++·算法·题解·csp·信奥赛·摩尔投票算法
m0_531237171 小时前
C语言-编程实例
c语言·开发语言·数据结构
闻缺陷则喜何志丹1 小时前
【差分数组】P9166 [省选联考 2023] 火车站|普及+
数据结构·c++·洛谷·差分数组
重生之我是Java开发战士2 小时前
【优选算法】链表:两数相加,两两交换节点,重排链表,合并K个升序链表,K个一组反转链表
数据结构·算法·链表
Felven2 小时前
C. Yet Another Card Deck
c语言·开发语言
样例过了就是过了2 小时前
LeetCode热题100 反转链表
数据结构·算法·leetcode·链表