判断链表中是否有环

  • 实例要求:
  • 给定一个链表的头节点 head ,判断链表中是否有环;
  • 如果链表中存在环 ,则返回 true ,否则返回 false;
  • 实例分析:
  • 1、定义两个指针temp1和temp2,指针temp1每次只移动一步,而指针temp2每次移动两步;
  • 2、初始化两个指针,指针temp1在位置 head,而指针temp2在位置 head->next;
  • 3、在移动的过程中,指针temp2反过来追上指针temp1,就说明该链表为环形链表;
  • 示例代码:
c 复制代码
	/**
	 * Definition for singly-linked list.
	 * struct ListNode {
	 *     int val;
	 *     struct ListNode *next;
	 * };
	 */
	bool hasCycle(struct ListNode *head) 
	{
	    if(NULL == head || NULL == head->next)	
	    {
	        return false; 
	    }
	
	    struct ListNode* temp1 = head;
	    struct ListNode* temp2 = head->next;
	
	    while(temp1 != temp2)
	    {
	        if(NULL == temp2 || NULL == temp2->next)
	        {
	            return false;
	        }
	        temp1 = temp1->next;
	        temp2 = temp2->next->next;
	    }
	
	    return true;
	
	    
	}
  • 注意:
  • NULL == head:入参合理性检查;
  • NULL == head->next:只有一个头结点;
相关推荐
shehuiyuelaiyuehao12 小时前
算法56,重排链表
数据结构·算法·链表
suhan13 小时前
【数据结构】七、查找:1.查找的概念、线性结构查找(顺序、折半(二分)、插值、稠密、分块、倒排)
数据结构·算法·排序算法
极客 - L U13 小时前
卡尔曼滤波从零到精通
c语言·数据结构·单片机·嵌入式硬件·mcu
Sarvartha16 小时前
栈的四则运算、栈的递归应用
数据结构·算法
YXXY31317 小时前
链表的相关介绍
链表
GG.WinGel18 小时前
三元组中心问题
java·数据结构·算法·青少年编程·蓝桥杯
程序员清风19 小时前
缓存、索引与数据结构的工程选择
数据结构·spring·缓存
爱吃火鸡面呀20 小时前
Doris 数据划分实战:List 分区、分桶列与桶数选择
数据结构·list
BK贝壳1 天前
亿级用户签到位图选型复盘:用 bool-hybrid-array 扛冷启动打卡,也把它和 Roaring/Redis 的边界测清楚了
数据结构·python·性能优化·numpy
挖井观天1 天前
《Java数据结构》第一讲:顺序表
数据结构