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

链表相加(二)

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

class Solution {
public:
    /**
     *
     * @param head1 ListNode类
     * @param head2 ListNode类
     * @return ListNode类
     */
    ListNode* addInList(ListNode* head1, ListNode* head2) {
        if(head1==NULL||head2==NULL)
            return (head1==NULL)? head1:head2;

        ListNode* ans = new ListNode(-1);
        ListNode* res = ans;

        reverselist(head1);
        reverselist(head2);

        //cout << head1->val << "|" << head2->val << endl;

        int flag = 0;

        while(head1!=NULL||head2!=NULL||flag==1){
            int tem1 = head1==NULL? 0:head1->val;
            int tem2 = head2==NULL? 0:head2->val;

            //cout << tem1 << "||" << tem2 << endl;


            int tem = tem1+tem2+flag;



            flag = tem/10;
            int anstem = tem%10;


            //cout << tem << "|" << anstem << endl;

            ans->next = new ListNode(anstem);
            ans = ans->next;

            //cout << anstem << endl;

            if(head1!=NULL)
                head1 = head1->next;
            if(head2!=NULL)
                head2 = head2->next;
        }

        reverselist(res->next);
        return res->next;
    }

    void reverselist(ListNode* &head){//? 结构体指针只是值传递,不是地址传递 注意加引用
        //ListNode* pre;  //? 结构体指针变量不能连续定义
        ListNode* cur;
        ListNode* next;

        cur = head->next;
        head->next = NULL;
        next = cur->next;

        while(cur!=NULL){
            cur->next = head;

            head = cur;
            cur = next;
            next = next->next;

        }


    }
};

全部评论

相关推荐

废铁汽车人:秋招真是牛鬼蛇神齐聚一堂
点赞 评论 收藏
分享
沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务