在这个测试用例中,我得到分割错误在gfg中检测链表中的循环问题//184//这是存在循环的值73 39 71 71年28日24日31日14 35 60 3 48 45 43 76 33 75 44 59 47 41 39 40 23 63 4 2 9 44 62 33 75 56 18 28 52 17 30 19 62 24 14十四28 40 9 7 38 1 45 29 55 59 32 57 19 76 13 52 30 40 70年11 57 65 27日60 1 19 30 14 42 75 59 28 70 67 68 24 68 72 53 43 2 36 51 20 71年15日31日12 54 18 55 62 2 44 41 34 63 22 48 56 17 26 45 3 13 72 58 33 15 62 27 16 18 29 36 80 43 58 44 17 75 18 30 61年28 62年23日13日27日44 3 12 6 47 46 51 71 24 35 37 37 61 53 6 9 40 6 51 17 1 19 44 18 49 23 36 62 71 9 66 78年16日11日54 9 43 2431 18 58 68 7 70 72 12 30 310//这些是链表的值"
class Solution
{
public:
//Function to check if the linked list has a loop.
bool detectLoop(Node* head)
{
if(head->next ==NULL || head==NULL)
{
return false;
}
Node *slow=head;
Node *fast=head;
while(fast->next !=NULL && fast!=NULL)
{
slow=slow->next;
fast=fast->next->next;
if(slow==fast)
{return true;
}
}
return false;
}
};
我在gfg
上写了这段代码至少需要在if语句和while循环中交换逻辑表达式的子表达式。而不是
if(head->next ==NULL || head==NULL)
和
while(fast->next !=NULL && fast!=NULL)
你需要写
if( head == NULL || head->next == NULL )
和
while( fast != NULL && fast->next != NULL)
代码行
fast=fast->next->next;
你正在做第二个"next"没有检查第一个"下一个"给了零。当"快速"时,这肯定会导致所有合法输入的分段错误。