创建链表,判断链表是否有环
#include<iostream>
#include<algorithm>
#include<string>
#include<queue>
using namespace std;
class LinkNode{
public:
int val;
LinkNode *next;
LinkNode() :val(0), next(nullptr){}
LinkNode(int value) :val(value), next(nullptr){}
};
LinkNode* creatnode(int head) {
return new LinkNode(head);
}
//LinkNode* creatLink(string s) {
// if (s.empty()) {
// return nullptr;
// }
// LinkNode *head = new LinkNode(s[0]-'0');
// LinkNode *p = head;
//
// for (int i = 1;i<s.size();++i) {
// if (s[i]== ' ') {
//
// }
// else {
// LinkNode *node = new LinkNode(s[i]-'0');
// p->next = node;
// p = node;
// }
// }
//
// return head;
//}
bool isCircle(LinkNode *head) {
if (head == nullptr) {
return false;
}
LinkNode *slow = head;
LinkNode *quick = head;
while (quick->next&&quick->next->next) {
if (quick->next==slow||quick->next->next==slow) {
return true;
}
slow = slow->next;
quick = quick->next->next;
}
return false;
}
int main() {
/*string input;
getline(cin,input);
LinkNode *head = creatLink(input);*/
LinkNode *head = new LinkNode(1);
LinkNode *a = new LinkNode(2);
LinkNode *b = new LinkNode(3);
LinkNode *c = new LinkNode(4);
LinkNode *d = new LinkNode(5);
LinkNode *e = new LinkNode(6);
head->next = a;
a->next = b;
b->next = c;
c->next = d;
d->next = e;
e->next = b;
cout<<boolalpha<<isCircle(head)<<endl;
system("pause");
}