【发布时间】:2017-11-27 18:39:11
【问题描述】:
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'
是什么导致了这个错误?
【问题讨论】:
-
是否有一些静态代码分析工具在该代码上运行?
-
每次迭代移动两步很危险,不是吗?你怎么知道列表有偶数个元素?
-
我建议你学习使用调试器。
-
看来您需要rubber_duck...
标签: c++ data-structures linked-list