Untitled
unknown
plain_text
2 years ago
5.6 kB
6
Indexable
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode *getnode() { struct ListNode *newnode; newnode=(struct ListNode *)malloc(sizeof(struct ListNode)); newnode->val=0; newnode->next=NULL; return newnode; } struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) { struct ListNode *temp1,*temp2,*temp3,*l3=NULL; int v1,v2,v3,n1=0,n2=0,n3=0,carry=0; while(l1!=NULL && l2!=NULL) { temp1=getnode(); v1=(l1->val); v2=(l2->val); if(carry==1) { v3=v1+v2+carry; carry=0; } else v3=v1+v2; if(v3>9) { v3=v3-10; (temp1->val)=(v3); if((l1->next)||(l2->next)) { if(l1->next) { l1=l1->next; n1=(l1->val); } if(l2->next) { l2=l2->next; n2=(l2->val); } n3=n1+n2+1; n1=0; n2=0; temp3=getnode(); //temp1->next=temp3; if(n3>9) { n3=n3-10; (temp3->val)=n3; carry=1; } else temp3->val=n3; temp1->next=temp3; } else { temp3=getnode(); temp3->val=1; temp1->next=temp3; // temp1->next=getnode(); // temp1=temp1->next; // temp1->val=1; } } else { temp1->val=v3; } if(l3==NULL) { l3=temp1; } else { temp2=l3; while(temp2->next!=NULL) { temp2=temp2->next; } temp2->next=temp1; } l1=l1->next; l2=l2->next; //free(temp1); //temp1=temp1->next; } while(l1!=NULL || carry==1) { temp1=getnode(); if(l1) v1=(l1->val); else { v1=0; break; } if(carry==1) { v1=v1+1; carry=0; } if(v1>9) { temp1->val=v1-10; if(l1->next) { l1=l1->next; n1=(l1->val); n1=n1+1; temp3=getnode(); if(n1>9) { n1=n1-10; temp3->val=n1; carry=1; } else { temp3->val=n1; } temp1->next=temp3; } else { temp3=getnode(); temp3->val=1; temp1->next=temp3; // temp1->next=getnode(); // temp1=temp1->next; // temp1->val=1; } } else temp1->val=v1; if(l3==NULL) { l3=temp1; } else { temp2=l3; while(temp2->next!=NULL) { temp2=temp2->next; } temp2->next=temp1; } if(l1!=NULL) l1=l1->next; // temp1=temp1->next; } while(l2!=NULL || carry==1) { temp1=getnode(); if(l2) v1=(l2->val); else { v1=0; } if(carry==1) { v1=v1+1; carry=0; } if(v1>9) { temp1->val=v1-10; if(l2->next) { l2=l2->next; n1=(l2->val); n1=n1+1; temp3=getnode(); if(n1>9) { n1=n1-10; temp3->val=n1; carry=1; } else { temp3->val=n1; } temp1->next=temp3; } else { temp3=getnode(); temp3->val=1; temp1->next=temp3; // temp1->next=getnode(); //temp1=temp1->next; // temp1->val=1; } } else temp1->val=v1; if(l3==NULL) { l3=temp1; } else { temp2=l3; while(temp2->next!=NULL) { temp2=temp2->next; } temp2->next=temp1; } if(l2!=NULL) l2=l2->next; //temp1=temp1->next; } return l3; }
Editor is loading...