标签:
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
HideTags
#pragma once
#include<iostream>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
bool hasCycle(ListNode *head) {
ListNode* p1 = head;
ListNode* p2 = head;
while (p1&&p2)
{
p1 = p1->next;
p2 = p2->next;
if (p2)
p2 = p2->next;
else
return false;//到头,一定无环
if (p1 == p2)
return true;
}
return false;
}
void main()
{
ListNode* l1 = new ListNode(1);
ListNode* l2 = new ListNode(2);
ListNode* l3 = new ListNode(3);
ListNode* l4 = new ListNode(4);
ListNode* l5 = new ListNode(4);
l1->next = l2;
l2->next = l3;
//l3->next = l1;
l4->next = l1;
cout << hasCycle(l1) << endl;
/*cout << hasCycle(l2) << endl;
cout << hasCycle(l3) << endl;
cout << hasCycle(l4) << endl;
cout << hasCycle(l5) << endl;
cout << hasCycle(l5->next) << endl;*/
system("pause");
}
标签:
原文地址:http://blog.csdn.net/hgqqtql/article/details/43308233