主要是思维,用快慢指针好一些,就是一个指针跑的快一个指针跑的慢,如果有回环,那么快的指针先完成一圈后会与慢指针再次相遇
c
bool Node_ifhasCycle(struct Node *head) {
Node* t = head;
Node* q = head;
while(t != NULL && q != NULL && q->next != NULL){
t = t->next;
q = q->next->next;
if(t == q) return true;
}
return false;
}
一定要注意就是先判断指针是不是空再执行->next操作