runtime error: member access within null pointer of type ‘struct ListNode‘

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;
}<
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值