Add Two Numbers-----LeetCode

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8

 

解题思路:很简单,主要考察链表的操作,对链表的操作还不是很熟,另外没有见过这样的结构体,以后还要再做一遍。

 

struct ListNode {

    int val;

    ListNode *next;

    ListNode(int x) : val(x), next(NULL) {}

};



class Solution {

public:

    ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {

        // Start typing your C/C++ solution below

        // DO NOT write int main() function

//        ListNode *pResult = NULL;

//        ListNode **pCur = &pResult;



        ListNode rootNode(0);

        ListNode *pCurNode = &rootNode;

        int a = 0;

        while (l1 || l2)

        {

            int v1 = (l1 ? l1->val : 0);

            int v2 = (l2 ? l2->val : 0);

            int temp = v1 + v2 + a;

            a = temp / 10;

            ListNode *pNode = new ListNode((temp % 10));

            pCurNode->next = pNode;

            pCurNode = pNode;

            if (l1)

                l1 = l1->next;

            if (l2)

                l2 = l2->next;

        }

        if (a > 0)

        {

            ListNode *pNode = new ListNode(a);

            pCurNode->next = pNode;

        }

        return rootNode.next;

    }

};

 

你可能感兴趣的:(LeetCode)