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

相关推荐
水饺编程几秒前
第5章,[标签 Win32] :GDI 的其他方面的分类
c语言·c++·windows·visual studio
计算机安禾1 分钟前
【数据结构与算法】第46篇:算法思想(一):递归与分治
c语言·数据结构·c++·算法·visualstudio·图论·visual studio code
Sirens.2 分钟前
七大经典排序算法:原理、实现与复杂度分析
java·数据结构·算法·排序算法
Shadow(⊙o⊙)12 分钟前
C中 memset enum malloc fputc fgetc fgets fread fwrite rewind指针回退
java·c语言·数据库
wengqidaifeng14 分钟前
第十七届蓝桥杯C/C++软件赛C组算法题讲解
c语言·c++·蓝桥杯
feng_you_ying_li21 分钟前
C++11,lambda,包装器
开发语言·数据结构·c++
Shadow(⊙o⊙)23 分钟前
C学习历程的总汇
c语言·学习·jquery
艾莉丝努力练剑26 分钟前
【Linux线程】Linux系统多线程(五):<线程同步与互斥>线程互斥
linux·运维·服务器·c语言·c++·学习·ubuntu
_日拱一卒32 分钟前
LeetCode:206反转链表
算法·leetcode·链表
山甫aa35 分钟前
哈希表的变化(链表数组强化)----从零开始的数据结构
数据结构·哈希算法·散列表