/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2)
{
struct ListNode *head,*tmp;
struct ListNode *cur=(struct Node*)malloc(sizeof(struct ListNode));
cur->next=NULL;
head=NULL;
int n=0;
int buff=0;
while(l1||l2)
{
tmp=(struct Node*)malloc(sizeof(struct ListNode));
tmp->next=NULL;
if(l1&&!l2)
{
tmp->val=(l1->val+buff)%10;
buff=(l1->val+buff)/10;
if(n==0)
{
head=tmp;
n++;
}
else
{
cur->next=tmp;
}
cur=tmp;
l1=l1->next;
}
else if(!l1&&l2)
{
tmp->val=(l2->val+buff)%10;
buff=(l2->val+buff)/10;
if(n==0)
{
head=tmp;
n++;
}
else
{
cur->next=tmp;
}
cur=tmp;
l2=l2->next;
}
else
{
tmp->val=(l1->val+l2->val+buff)%10;
buff=(l1->val+l2->val+buff)/10;
if(n==0)
{
head=tmp;
n++;
}
else
{
cur->next=tmp;
}
cur=tmp;
l1=l1->next;
l2=l2->next;
}
}
if(buff!=0)
{
cur->next=(struct ListNode*)malloc(sizeof(struct ListNode));
cur->next->val=buff;
cur->next->next=NULL;
}
return head;
}
Note:
struct ListNode cur=(struct Node)malloc(sizeof(struct ListNode));
cur->next=NULL;
//member access within misaligned address 0x000000000031 for type ‘struct ListNode’, which requires 8 byte alignment