LeetCode:runtime error: member access within null pointer of type 'struct ListNode'
写一个判断循环链表的函数,因为题目规定了链表最大长度为10的4次方,在Int类型可表示范围内,我就用了一个笨办法:创建一个计数器,每往后移动一次指针,计数器加一,每次循环判断一次计数器是否超过范围。不要抨击,确实很笨,就算对了时间成本也太高了,关键它还错了...报错内容是个heap-use-after-free,大概意思就是栈使用后释放,然后再次使用,那当然找不到地方啦,程序当然就崩了。
换快慢指针吧,第一次代码还没问题,但时间和空间消耗过高,leetcode上的排名有点随机,我想着把指针判别语句什么的位置调调看能不能排名提高一点,结果就出问题了。
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
bool hasCycle(struct ListNode *head) {
struct ListNode* p = head->next;
struct ListNode* q = head;
while(p && p->next){
if(p == q) return true;
p = p->next->next;
q = q->next;
}
return false;
}
<