菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
487
0

单链表

原创
05/13 14:22
阅读数 41982
//连个链表相加//

#include "stdafx.h"

#include <iostream>
using namespace std;

// single linked list node
struct listNode{
    int val;
    listNode *next;
    listNode(int x) :val(x), next(nullptr){}
};

listNode *addTwoNumber(listNode *&L1, listNode *&L2)
{
    int value = 0;
    int carry = 0;
    listNode headNode(-1);
    listNode *pre = &headNode;

    for (listNode *pa = L1, *pb = L2;
        pa != nullptr || pb != nullptr;
        pa = pa == nullptr ? nullptr : pa->next,
        pb = pb == nullptr ? nullptr : pb->next)
    {
        value = (pa->val + pb->val + carry) % 10;
        carry = (pa->val + pb->val + carry) / 10;
        pre->next = new listNode(value);
        pre = pre->next;
    }
    if (carry > 0)
        pre->next = new listNode(carry);

    return headNode.next;
}
int _tmain(int argc, _TCHAR* argv[])
{
    listNode *L1;
    L1 = new listNode(2);
    L1->next = new listNode(4);
    L1->next->next = new listNode(3);

    listNode *L2;
    L2 = new listNode(5);
    L2->next = new listNode(6);
    L2->next->next = new listNode(7);

    listNode *L3 = addTwoNumber(L1, L2);

    cout << L3->val << L3->next->val << L3->next->next->val << L3->next->next->next->val << endl;

    system("pause");

    return 0;

}

 

发表评论

0/200
487 点赞
0 评论
收藏
为你推荐 换一批