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

相关推荐
冰西瓜60015 小时前
分治(二)算法设计与分析 国科大
数据结构·算法
缘三水15 小时前
【C语言】15.指针(5)
c语言·开发语言·指针·语法
加藤不太惠16 小时前
【无标题】
java·数据结构·算法
ULTRA??16 小时前
C++数据结构的链表实现模拟
c++·链表
灰灰勇闯IT16 小时前
C语言实战:字符串元音字母提取器的实现与优化
c语言·开发语言
夏乌_Wx16 小时前
练题100天——DAY22:数字拼接+只出现一次的数字
java·数据结构·算法
koping_wu17 小时前
【Zookeeper】数据结构、集群原理、选举机制
数据结构·zookeeper·java-zookeeper
hweiyu0017 小时前
数据结构:线段树
数据结构
CQ_YM17 小时前
数据结构之哈希表
数据结构·算法·哈希算法·哈希表
FMRbpm17 小时前
顺序表实现队列
数据结构·c++·算法·新手入门