您的位置:首页 > 其它

lintcode 167 链表求和

2017-03-31 18:35 459 查看
1.你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中
相反
的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。

2.完全没有思路啊.........................百度百度

3.通过的代码

/**

 * Definition for singly-linked list.

 * struct ListNode {

 *     int val;

 *     ListNode *next;

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

 * };

 */

class Solution {

public:

    /**

     * @param l1: the first list

     * @param l2: the second list

     * @return: the sum list of l1 and l2 

     */

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

        // write your code here

         if(l1==NULL&&l2==NULL) return NULL;

        ListNode *head=new ListNode(0);

        ListNode *rear=head;

        int m=0;

        while(l1!=NULL&&l2!=NULL)

        {

            m=l1->val+l2->val+m;

            rear->next=new ListNode(m%10);

            l1=l1->next;

            l2=l2->next;

            rear=rear->next;

            m=m/10;

        }

        ListNode *temp;

        if(l1==NULL){temp=l2;}else{temp=l1;}

        while(temp!=NULL)

        {

            m=temp->val+m;

            rear->next=new ListNode(m%10);

            temp=temp->next;

            rear=rear->next;

            m=m/10;

        }

        if(m==1)

        rear->next=new ListNode(1);

        return head->next;

    }

};

4.感想

刚开始就觉着这个题好难.看了一遍又一遍,还是一点思路都没有.无奈只好百度了.毕竟百度是万能的..看了代码之后,瞬间觉着更难了,这个题我不会.不过我会多看几次直到明白这个题的,多问问同学和老师。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: