我使用了两个计数器,一个计数器是指针指针指针到现在为止到达的位置,另一个计数器从开始到比指针所在位置小的一个位置,以查找类似的节点,但此代码不起作用,为什么?
bool has_cycle(Node* head) {
// Complete this function
// Do not write the main method
int i=0,j=0;
struct Node* temp=head;
while(head!=NULL){
i=0;
while(i<j){
if(temp==head){
return true;
}
temp=temp->next;
i++;
}
j++;
head=head->next;
}
return false;
}
在得到David C.Rankin答案的帮助后,我编写了以下代码,效果很好。
bool has_cycle(Node* head) {
// Complete this function
// Do not write the main method
int i=0,j=0;
struct Node* temp=head;
struct Node* temp1=head;
while(head!=NULL){
i=0;
while(i<j){
if(temp==head){
return true;
}
temp=temp->next;
i++;
}
temp=temp1;
j++;
head=head->next;
}
return false;
}