栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

LeetCode——第141题目 环形链表(C)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode——第141题目 环形链表(C)

思想:1:首先判断该链表是否为空,

        2:只有一个元素判断是否自己指向自己本身或者最后一个元素指向本身

        3:排除前二个情况下,进行判断是否有回环

        4:首先定义二个指针M,P,① P指针指向第二个元素,M指针负责从头开始判断当前地址是否和P指针地址相同,相同就返回true; ②如果二个指针指向同一个地方跳出循环,P=P->next;③往返此过程

下面给出代码:

bool hasCycle(struct ListNode *head) {
    
    if(head==NULL||head->next==NULL) return false; //空链表或只有一个元素 
    if(head->next==head) return true; //一个元素自己指向自己
	struct ListNode *P=head->next;

    
    while(P->next!=NULL){
    	struct ListNode *M = head;
    	for(int i=0;;i++){
            if(M==P->next) return true;  //M指针和P指针后继相同,有回环
            if(M==P) break; //二个指针指向同一个位置,出循环
            M = M->next;
		}
        P = P->next;
		
	}
    return false;
}

个人想法,不好的地方欢迎指出

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/917230.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号