链表是否存在环的判断
2019-08-08 本文已影响0人
_NewMoon
如何判断一个单链表是否存在环
- 快慢指针: 创建两个指针first,second指向头节点,first每次走一个结点,second每次走两个结点,
如果该链表中存在环,那么这两个指针一定能相遇(快慢指针的思路在链表题目中非常常见,需要掌握)
2.一般方法: 创建两个指针p,q指向头节点,p总是向前走,q每次走从头开始走,每次相遇,比较两个指针
例题: 141. 环形链表

class Solution {
public:
bool hasCycle(ListNode *head) {
if(!head||head->next==NULL) return false;
ListNode *first,*second;
first = head;
second = head->next;
while(first!=second && second->next!=NULL && second->next->next != NULL)
{
first = first->next;
second = second->next->next;
}
return first == second? true:false;
}
};