struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
bool hasCycle(ListNode *head) {
if(head == NULL) return false;
ListNode* walker = head;
ListNode* runner = head;
while(runner->next != NULL && walker->next != NULL){
walker = walker->next;
runner = runner->next->next;
if(walker == runner) return true;
}
return false;
}
};
我正在练习一个看起来很简单的面试代码。我必须返回一个确定单链表是否有循环的布尔值。我做了两个指针 walker 移动 1 步和 runner 每次迭代移动 2 步。
但随后这段代码给了我一个错误:
Line 15: member access within null pointer of type 'struct ListNode'
是什么导致了这个错误?
原文由 Dukakus17 发布,翻译遵循 CC BY-SA 4.0 许可协议
您只需确保
runner->next
不为空,但是在分配之后runner = runner->next->next;
runner
可以变为空。