判断链表中是否有环

  • 实例要求:
  • 给定一个链表的头节点 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:只有一个头结点;
相关推荐
yuuki2332332 小时前
【数据结构】双向链表的实现
c语言·数据结构·后端
我不是彭于晏丶3 小时前
238. 除自身以外数组的乘积
数据结构·算法
代码雕刻家3 小时前
1.6.课设实验-数据结构-栈、队列-银行叫号系统2.0
c语言·数据结构
Violet_YSWY3 小时前
任何数据结构的构造或初始化,都应指定大小,避免数据结构无限增长吃光内存【示例】
java·数据结构
代码雕刻家4 小时前
1.7.课设实验-数据结构-二叉树-文件夹创建系统
c语言·数据结构
sigd5 小时前
排队选人-2024年秋招-小米集团-软件开发岗-第二批笔试
数据结构·算法
墨染点香16 小时前
LeetCode 刷题【138. 随机链表的复制】
算法·leetcode·链表
立志成为大牛的小牛20 小时前
数据结构——三十七、关键路径(王道408)
数据结构·笔记·程序人生·考研·算法
Shinom1ya_1 天前
算法 day 41
数据结构·算法·leetcode
无敌最俊朗@1 天前
C++ 值类别与移动语义详解(精简版)
java·数据结构·算法