【问题标题】:runtime error: member access within null pointer of type 'ListNode'. Why does one piece works but the other doesn't?运行时错误:“ListNode”类型的空指针内的成员访问。为什么一件可以,另一件不行?
【发布时间】:2021-12-23 16:33:12
【问题描述】:

我试图在 leetcode 上解决这个寻找链表中点的问题。

class Solution {
public:
    ListNode* middleNode(ListNode* head) {
        ListNode* slow=head,* fast=head;
        while(fast->next!=NULL && fast!=NULL)
            slow=slow->next,
            fast=fast->next->next;
        return slow;
    }
};

以上代码报错。

class Solution {
public:
    ListNode* middleNode(ListNode* head) {
        ListNode* slow=head,* fast=head;
        while(fast!=NULL && fast->next!=NULL)
            slow=slow->next,
            fast=fast->next->next;
        return slow;
    }
};

虽然这个有效。 这是为什么?有人可以帮帮我吗?

【问题讨论】:

    标签: pointers linked-list


    【解决方案1】:

    当您使用 && 时,它不会完全计算,如果第一个语句是 false,那么第二个语句根本不会计算。所以在第一种情况下,您不检查fast 是否为NULL,而是尝试在NULL 上使用操作->,即access within null pointer

    但在第二个代码中,始终保证 fast != NULL 在您使用操作时 -> (fast->next)。

    【讨论】:

      猜你喜欢
      • 2021-05-02
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      • 2022-12-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多