给你一个链表的头节点 head
,判断链表中是否有环。
//判断是否是循环链表
//比较容易理解的是使用快慢双指针,适合数据结构小白,只需要判断快指针是否会等于慢指针即可
struct ListNode
{
int val;
struct ListNode *next;
};
bool hasCycle(struct ListNode* head)
{
if (head == NULL || head->next == NULL)
return false;
struct ListNode* slow = head;
struct ListNode* fast = head->next;
while (slow != fast)
{
if (fast == NULL || fast->next == NULL)
return false;
else
{
slow = slow->next;
fast = fast->next->next;
}
}
return true;
}
//参考LeetCode的解题方法,也可以使用哈希表来处理,在此不做说明