这道题其实就是一道大数加法,平时没有经常使用链表,结果写起来非常差劲。。
其中遇到的问题是
member access within null pointer of type 'struct ListNode'
就是意思你在使用的时候要判断他是否为空,其实只要申请空间就好了,我是真滴菜!
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
struct ListNode *l3,*l4;
l3 = (struct ListNode *)malloc(sizeof(struct ListNode));
l4=l3;
l3->val=0;
l3->next=NULL;
//if(l3){
int sum=0;
int flag=0;
for(;;){
if(l1&&l2){
sum=l1->val+l2->val;
l3->val=(sum+flag)%10;
flag=(flag+sum)/10;
l1=l1->next;
l2=l2->next;
if(flag||l1||l2){
l3->next=(struct ListNode*)malloc(sizeof(struct ListNode));
l3=l3->next;}
}
else if(!l1&&l2){
sum=flag+l2->val;
l3->val=sum%10;
flag=sum/10;
l2=l2->next;
if(flag||l2){
l3->next=(struct ListNode*)malloc(sizeof(struct ListNode));
l3=l3->next;}
}
else if(l1&&!l2){
sum=flag+l1->val;
l3->val=sum%10;
flag=sum/10;
l1=l1->next;
if(flag||l1){
l3->next=(struct ListNode*)malloc(sizeof(struct ListNode));
l3=l3->next;}
}
else{
if(flag){
l3->val=flag;
}
break;
}
}
// }
l3->next=NULL;
return l4;
}