leetcode-Add Two Numbers-2

来源:互联网 发布:国民党真实抗战知乎 编辑:程序博客网 时间:2024/06/05 14:57

两个链表代表两个非负数,求和。上次RE的题

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {        ListNode* p=l1;        ListNode* q=l2;        ListNode* pre=NULL;        int c=0;        while(p&&q){            int tmp=p->val + q->val + c;            p->val=tmp%10;            c=tmp/10;            pre=p;            p=p->next;            q=q->next;        }        if(q){            p=q;            pre->next=q;        }        while(p){            int tmp=p->val + c;            p->val=tmp%10;            c=tmp/10;            pre=p;            p=p->next;        }        if(c){            // p->val=c;   //这个和上次的错误一样re了,链表节点不能这样用!!!            // p->next=NULL;                        //p=new ListNode(c);  //这样不行,这样p是一个单独的节点,没有和链表连起来,要错            if(pre){                pre->next=new ListNode(c);             }        }        return l1;    }};


0 0
原创粉丝点击