在 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-&gt;nextnullptr 并且您将其归因于 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;导致错误?的主要内容,如果未能解决你的问题,请参考以下文章

在列表python中添加数字

在 C++ 中实现双向链表时面临调试问题

在 C++ 控制台应用程序中使用 UWP 库

调试 jQuery 插件以在两个相等的列中显示动态列表

在Windows上使用VSCode远程链接到Linux上开发并调试C++程序

获取和设置函数 c++