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

相关推荐
norlan_jame20 小时前
C-PHY与D-PHY差异
c语言·开发语言
琢磨先生David20 小时前
Day1:基础入门·两数之和(LeetCode 1)
数据结构·算法·leetcode
czy878747521 小时前
除了结构体之外,C语言中还有哪些其他方式可以模拟C++的面向对象编程特性
c语言
m0_5312371721 小时前
C语言-数组练习进阶
c语言·开发语言·算法
qq_454245031 天前
基于组件与行为的树状节点系统
数据结构·c#
超级大福宝1 天前
N皇后问题:经典回溯算法的一些分析
数据结构·c++·算法·leetcode
岛雨QA1 天前
常用十种算法「Java数据结构与算法学习笔记13」
数据结构·算法
weiabc1 天前
printf(“%lf“, ys) 和 cout << ys 输出的浮点数格式存在细微差异
数据结构·c++·算法
wefg11 天前
【算法】单调栈和单调队列
数据结构·算法
岛雨QA1 天前
图「Java数据结构与算法学习笔记12」
数据结构·算法