首页 > 试题广场 >

链表相加(一)

[编程题]链表相加(一)
  • 热度指数:1596 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定两个非空链表逆序存储的的非负整数,每个节点只存储一位数组。
请你把两个链表相加以下相同方法返回链表,保证两个数都不会以 0 开头。
数据范围: ,每个节点的值都满足
示例1

输入

{2,5,6},{5,6,1}

输出

{7,1,8}
示例2

输入

{0},{1,2,3,4,5,6}

输出

{1,2,3,4,5,6}
示例3

输入

{9,9,9},{9,9,0}

输出

{8,9,0,1}

说明:本题目包含复杂数据结构ListNode,点此查看相关信息
struct ListNode* ListAdd(struct ListNode* l1, struct ListNode* l2 ) {
    if(l1==NULL)return l2;
    struct ListNode*p=l1,*q=l2,*pre=l1;
    int temp=0;
    while(p&&q)
    {
        int now=p->val+q->val+temp;
        p->val=now%10;
        temp=now/10;
        pre=p;
        p=p->next;
        q=q->next;
    }
    if(q){
        pre->next=q;
        p=pre->next;
    }
    while(p)
    {
        int now=p->val+temp;
        p->val=now%10;
        temp=now/10;
        pre=p;
        p=p->next;
    }
    if(temp)
    {
        struct ListNode* jinwei=(struct ListNode*)malloc(sizeof(struct ListNode));
        jinwei->val=temp;
        pre->next=jinwei;
        jinwei->next=NULL;
    }
    return l1;
}

发表于 2023-10-17 17:21:14 回复(0)