问题遇到的现象和发生背景
有没有一种可能,力扣也有测试误诊断的时候?
问题相关代码,请勿粘贴截图
/**
- Definition for singly-linked list.
- struct ListNode {
int val;
ListNode *next;
ListNode() : val(0), next(nullptr) {}
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *next) : val(x), next(next) {}
- };
- /
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2)
{
}ListNode *h,*p=new ListNode(); h=p; int sum=0,o=0; if((l1)&&(l2)) sum=l1->val+l2->val; else if(l1) sum=l1->val; else if(l2) sum=l2->val; if(sum>9) { sum-=10; o=1; } p->val=sum; while((l1->next)||(l2->next)||o==1) { p->next=new ListNode(o); p=p->next; l1=l1->next; l2=l2->next; if((l1)&&(l2)) sum=o+l1->val+l2->val; else if(l1) sum=o+l1->val; else if(l2) sum=o+l2->val; else sum=1; o=0; if(sum>9) { sum-=10; o=1; } p->val=sum; } return h;
};运行结果及报错内容
Line 35: Char 20: runtime error: member access within null pointer of type 'ListNode' (solution.cpp)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior prog_joined.cpp:44:20我的解答思路和尝试过的方法
最开始使用的是通过乘法,还原数字并将l1和l2求和,将结果通过对10求余的方式还原成链表,我使用了long long数据类型来解决,长达11位的十进制数,结果因为计算精度丢失的原因(这我可控制不了)没能通过测试。
于是,我就使用了上面的方法,运行结果指出链表节点有空指针,反复检查,还是没看出错在哪了。我想要达到的结果