在 c++ 程序中调试链接列表以添加两个数字:有人可以解释为啥 l3=l3->next;导致错误?
Posted
技术标签:
【中文标题】在 c++ 程序中调试链接列表以添加两个数字:有人可以解释为啥 l3=l3->next;导致错误?【英文标题】:Debugging Linked Lists in c++ program to Add Two Numbers: Can someone explain why l3=l3->next; leads to the error?在 c++ 程序中调试链接列表以添加两个数字:有人可以解释为什么 l3=l3->next;导致错误? 【发布时间】:2018-03-28 19:21:37 【问题描述】:上下文:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8。解释:342 + 465 = 807。
得到以下错误:
第 40 行:成员访问范围内 >'struct ListNode'类型的空指针?
不明白出了什么问题..有人可以解释为什么 >l3=l3->next;导致错误?
/**
* Definition for singly-linked list.
* struct ListNode
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL)
* ;
*/
class Solution
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)
ListNode* l3;
ListNode dummy(INT_MIN);
l3= &dummy;
//l3->val=3;
//l3=l3->next;
int i=0;
int n1=0;
while(l1)
n1+=(l1->val)*(pow(10,i));
l1=l1->next;
i++;
int j=0;
int n2=0;
while(l2)
n2+=(l2->val)*(pow(10,j));
l2=l2->next;
j++;
int n3=n1+n2;
while(n3)
l3->val=n3%10;
n3=n3/10;
cout<<l3->val<<endl;
cout<<dummy.next<<endl;
l3=l3->next;
return dummy.next;
;
【问题讨论】:
请使用调试器绘制列表。使用调试会话的结果编辑帖子。 谁能解释一下为什么 >l3=l3->next;导致错误? 可能是因为I3->next
是 nullptr
并且您将其归因于 I3 并在以后取消引用它
那么如何定义链表的大小呢?
【参考方案1】:
我自己也有同样的问题...
原因
什么错误信息
member access within null pointer of type >'struct ListNode'?
表明你的结构指针现在试图访问一个内存地址NULL
。
所以它表明这是一个运行时错误,这意味着它发生在运行时阶段。
解决方案
当您尝试访问指针指向的内容时,请确保它不是NULL
。
if( ListNodePtr != NULL)
ListNodePtr = ListNodePtr->next;
或
ListNodePtr = ListNodePtr ? ListNodePtr->next : NULL;
希望你在 LeetCode 上解决这个问题。
【讨论】:
以上是关于在 c++ 程序中调试链接列表以添加两个数字:有人可以解释为啥 l3=l3->next;导致错误?的主要内容,如果未能解决你的问题,请参考以下文章