Can you please explain me the meaning of following lines in below linked list code and if you know any alternate method to these lines then please share it as well.
- ListNode *l3=NULL;
- ListNode **node=&l3;
- (*node)=new ListNode(sum%10);
- node=&((*node)->next);
I have also marked them in the code as query 1, query2, query3 and query 4 for your convinience
/**
* 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) {
int sum=0;
ListNode *l3=NULL; //----------------------------------Query 1
ListNode **node=&l3;//---------------------------------Query 2
while(l1!=NULL||l2!=NULL||sum>0)
{
if(l1!=NULL)
{
sum+=l1->val;
l1=l1->next;
}
if(l2!=NULL)
{
sum+=l2->val;
l2=l2->next;
}
(*node)=new ListNode(sum%10);//--------------------Query 3
sum/=10;
node=&((*node)->next);//---------------------------Query 4
}
return l3;
}
};