判断链表中是否有环

  • 实例要求:
  • 给定一个链表的头节点 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:只有一个头结点;
相关推荐
算法鑫探5 小时前
闰年判断:C语言实战解析
c语言·数据结构·算法·新人首发
木子墨5165 小时前
LeetCode 热题 100 精讲 | 并查集篇:最长连续序列 · 岛屿数量 · 省份数量 · 冗余连接 · 等式方程的可满足性
数据结构·c++·算法·leetcode
2501_921960856 小时前
双相自指图与弦论边界非对易性的结构同源
数据结构
Liangwei Lin6 小时前
洛谷 P3133 [USACO16JAN] Radio Contact G
数据结构·算法
锅挤9 小时前
数据结构复习(第五章):树与二叉树
数据结构
杨凯凡10 小时前
【014】基本类型与包装类:缓存、相等性、NPE
java·数据结构·缓存
故事和你9110 小时前
洛谷-算法1-7-搜索3
数据结构·c++·算法·leetcode·动态规划
想唱rap10 小时前
C++智能指针
linux·jvm·数据结构·c++·mysql·ubuntu·bash
会编程的土豆11 小时前
【日常做题】 代码随想录(岛屿最大面积+寻宝)
数据结构·算法·图论
疯狂打码的少年12 小时前
有序线性表删除一个元素:顺序存储 vs 单链表,平均要移动多少个元素?
数据结构·算法·链表