1. Add Two Numbers

Link here see more.

/**
 * 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 *res = NULL, *prep = NULL, *ptr = NULL;
        ListNode *p1 = l1, *p2 = l2;
        res = newListNode(0);
        prep = ptr = res;
        int curNum, nextNum;
        curNum = nextNum = 0;
        while(p1 != NULL && p2 != NULL){
            curNum += p1->val + p2->val;
            nextNum += curNum / 10;
            curNum %= 10;
            ptr->val = curNum;
            ptr->next = newListNode(0);
    
            curNum = nextNum;
            nextNum = 0;
            p1 = p1->next;
            p2 = p2->next;
            prep = ptr;
            ptr = ptr->next;
        }
        ListNode* tmp;
        if(p1 == NULL){
            tmp = p2;
        }
        else{
            tmp = p1;
        }
        while(tmp != NULL){
            curNum += tmp->val;
            nextNum = curNum / 10;
            curNum %= 10;
            
            ptr->val = curNum;
            ptr->next = newListNode(0);

            prep = ptr;
            ptr = ptr->next;
            curNum = nextNum;
            tmp = tmp->next;
        }
        if(curNum != 0){
            ptr->val = curNum;
            ptr->next = NULL;
        }
        else{
            prep->next = NULL;
            //free(ptr);
        }
        return res;
    }
private:
    ListNode* newListNode(int num){
        ListNode* tmp = new ListNode(num);
        return tmp;
    }
};
发布了62 篇原创文章 · 获赞 9 · 访问量 7824

猜你喜欢

转载自blog.csdn.net/qq_40491305/article/details/103997109