• leetcode-2-两数相加(链表)


    #include<vector>
    #include<map>
    #include<iostream>
    #include<memory>
    using namespace std;
    
    struct ListNode {
        int val;
        ListNode* next;
        ListNode(int x) : val(x), next(NULL) {}
        
    };
    
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        if (l1 == NULL)
            return l2;
        if (l2 == NULL)
            return l1;
        ListNode head(0);
        ListNode* pre = &head;
        int twosum;
        bool carryflag = false;//进位标记位
        while (l1 != NULL && l2 != NULL)
        {
            twosum = l1->val + l2->val + carryflag;
            carryflag = twosum / 10;
            ListNode* p = new ListNode(twosum % 10);
            pre->next = p;
            pre = p;
            l1 = l1->next;
            l2 = l2->next;
        }
        if (l1 != NULL) {
            while (l1 != NULL) {
                ListNode* p;
                if (carryflag) {
                    twosum = l1->val + carryflag;
                    carryflag = twosum / 10;
                    p = new ListNode(twosum%10);
                }
                else
                    p = new ListNode(l1->val);
                pre->next = p;
                pre = p;
                l1 = l1->next;
            }
        }
        else if (l2 != NULL) {
            while (l2 != NULL) {
                ListNode* p;
                if (carryflag) {
                    twosum = l2->val + carryflag;
                    carryflag = twosum / 10;
                    p = new ListNode(twosum%10);
                }
                else
                    p = new ListNode(l2->val);
                pre->next = p;
                pre = p;
                l2 = l2->next;
            }
        }
        if (carryflag) {
            ListNode* p = new ListNode(carryflag);
            pre->next = p;
            pre = p;
        }
        pre->next = NULL;
        return head.next;
    }
    
    void ListTravel(ListNode*p)
    {
        cout << "ADDR(" << p << ")  ";
        while (p != NULL)
        {
            cout << p->val << "	";
            p = p->next;
        }cout << endl;
    }
    
    int main()
    {
        ListNode p1(2), p2(4), p3(3);
        ListNode q1(5), q2(6), q3(4);
        p1.next = &p2; p2.next = &p3; p3.next = NULL;
        q1.next = &q2; q2.next = &q3; q3.next = NULL;
        ListTravel(&p1);
        ListTravel(&q1);
        auto i = addTwoNumbers(&p1, &q1);
        ListTravel(i);
    }
    
  • 相关阅读:
    C#获取HTML文件指定DIV内容
    剔除editor编辑器中的HTML标签
    ASP.NET MVC 在WebService中Token的使用方法
    MVC如何在单独的类库中添加区域
    原来写插件还可以选MEF
    EF CodeFirst学习
    .Net EF 学习之model first
    sql分页存储过程,带求和、排序
    软实力
    微软的XML可视化编辑器:XML Notepad 2007
  • 原文地址:https://www.cnblogs.com/sgawscd/p/13678558.html
Copyright © 2020-2023  润新知