判断链表是否有回环 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 小时前
C 语言源文件从编写完成到最终生成可执行文件的完整、详细过程
c语言·开发语言
TheSumSt14 小时前
Python丨课程笔记Part3:语法进阶部分(控制结构与基础数据结构)
数据结构·笔记·python
lengjingzju16 小时前
一网打尽Linux IPC(三):System V IPC
linux·服务器·c语言
长安er16 小时前
LeetCode 20/155/394/739/84/42/单调栈核心原理与经典题型全解析
数据结构·算法·leetcode·动态规划·
范纹杉想快点毕业18 小时前
返璞归真还是拥抱现代?——嵌入式研发中的“裸机开发”与RTOS全景解析
c语言·数据库·mongodb·设计模式·nosql
!停19 小时前
c语言动态申请内存
c语言·开发语言·数据结构
悟能不能悟19 小时前
list<string> 和String[],转化为jsonstr是不是一样的
数据结构·windows·list
TechNomad20 小时前
二叉堆&大根堆&小根堆的介绍和使用
数据结构
iAkuya21 小时前
(leetcode)力扣100 27合并两个有序链表(迭代/递归)
算法·leetcode·链表
发疯幼稚鬼21 小时前
图的存储与拓扑排序
数据结构·算法·排序算法·拓扑学