题解 | #链表相加(二)#

链表相加(二)

https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */

class Solution {
public:
    /**
     * 
     * @param head1 ListNode类 
     * @param head2 ListNode类 
     * @return ListNode类
     */
    void myReverse(ListNode* &head)
    {
        if(head==NULL||head->next==NULL) return ;
        ListNode* pre=NULL,*p=head;
        while(p)
        {
            ListNode* t=p->next;
            p->next=pre;
            if(p) pre=p;
            p=t;
        }
        head=pre;
    }
    ListNode* addInList(ListNode* head1, ListNode* head2) {
        // write code here
        //先将链表逆转
        myReverse(head1);
        myReverse(head2);
        //cout<<head2->val<<head2->next->val;
        //相加
        ListNode* p1=head1,*p2=head2;
        int num1,num2,carry=0;//carry  进位
        bool isfirst=1;
        ListNode* tail,*head;
        while(p1||p2)
        {
            if(p1)
            {
                num1=p1->val;
                p1=p1->next;
            }
            else num1=0;
            if(p2)
            {
                num2=p2->val;
                p2=p2->next;
            }
            else num2=0;
            ListNode* node=new ListNode(0);
            if(isfirst==1)
            {
                tail=node;
                head=node;
                tail->next=NULL;
                isfirst=0;
            }
            node->next=tail->next;
            if(tail!=node)
                tail->next=node;
            tail=node;
            node->val=(num1+num2+carry)%10;
            carry=(num1+num2+carry)/10;
            //cout<<carry<<endl;
        }
        if(carry) 
        {
            ListNode* node=new ListNode(carry);
            tail->next=node;
            node->next=NULL;
        }
        myReverse(head);
        return head;
    }
};

全部评论

相关推荐

06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-15 17:09
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务