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

链表相加(二)

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;
    }
};

全部评论

相关推荐

最近拿到了正浩的提前批offer感觉自己的实力得到了肯定,也给了我更多底气
搞机墨镜猫:正浩提前批官网好像就只有电力电子软硬件,哥们投的是这两个岗位吗
26届校招投递进展
点赞 评论 收藏
分享
06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在...:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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