![](/img/trans.png)
[英]runtime error: member access within null pointer of type 'ListNode' - Clone a linked list
[英]Runtime error in Linked List :member access within null pointer of type 'ListNode'
我得到兩個代表兩個非負整數的非空鏈表,我試圖將這兩個數字相加並將總和作為鏈表返回。 我收到一個錯誤,上面寫着
字符 18:運行時錯誤:null 類型“ListNode”(solution.cpp)指針內的成員訪問摘要:UndefinedBehaviorSanitizer:未定義行為
為什么我得到這個數組,我該如何解決這個問題?
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
int carry=0,sum = 0;
ListNode* res = new ListNode(0);
while(l1->next !=NULL){
sum = carry + l1->val + l2->val;
if(sum>9)
carry = 1;
else
carry = 0;
res = res->next;
res->val = sum;
}
return res;
}
};
錯誤顯示在與代碼一致
res->val = sum;
這段代碼首先有很多錯誤,你沒有更新 l2 的值,所以最終你試圖將 l1 的所有值與 l2 的 head->node 相加,這是荒謬的。
至於錯誤,它的發生是因為您正在創建一個新節點ListNode* res = new ListNode(0);
因此,根據此創建一個名為 res 的新節點, res- res->next
將包含NULL
,我猜測這是根據您的ListNode
class 的構造函數調用。
所以 w.r.t 以上語句res = res->next;
現在 res 指向 NULL。 進一步res->val = sum;
您正在嘗試訪問 null 中的值,從而給您運行時錯誤,因為您正在嘗試訪問未分配的內容。
我建議您首先嘗試簡單的問題“將 1 添加到給定的鏈表”。 因為當你將 1 添加到 999 時它也可以生成進位,結果鏈表應該是 1000。
它將使您更好地了解如何解決此類問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.