![](/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.