leetcode 2
就是链表的处理问题,注意细节即可
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 public: 11 ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { 12 int ok=0; 13 ListNode *pre,*l3=(struct ListNode *)malloc(sizeof(ListNode)); 14 ListNode *start=l3; 15 while(l1!=NULL&&l2!=NULL) { 16 l3->val=l1->val+l2->val+ok; 17 ok=l3->val/10; 18 l3->val=l3->val%10; 19 pre=l3; 20 l3->next=(struct ListNode *)malloc(sizeof(ListNode)); 21 l3=l3->next; 22 l1=l1->next; 23 l2=l2->next; 24 } 25 while(l1!=NULL) { 26 l3->val=l1->val+ok; 27 ok=l3->val/10; 28 l3->val=l3->val%10; 29 pre=l3; 30 l3->next=(struct ListNode *)malloc(sizeof(ListNode)); 31 l3=l3->next; 32 l1=l1->next; 33 } 34 while(l2!=NULL) { 35 l3->val=l2->val+ok; 36 ok=l3->val/10; 37 l3->val=l3->val%10; 38 pre=l3; 39 l3->next=(struct ListNode *)malloc(sizeof(ListNode)); 40 l3=l3->next; 41 l2=l2->next; 42 } 43 if(ok) { 44 l3->val=ok; 45 l3->next=NULL; 46 } 47 else { 48 pre->next=NULL; 49 free(l3); 50 } 51 return start; 52 } 53 };