链表中每一个节点的值都在 0 - 9 之间,链表整体代表一个整数。 两个这种链表,请生成个整数相加值的结果链表。

博客围绕链表整数相加问题展开,假设链表节点值在 0 - 9 之间,链表整体代表一个整数。给定两个这样的链表,需生成代表两整数相加值的结果链表,还提及了算法实现中链表翻转的原理图和函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题详述: 假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。
给定两个这种链表,请生成代表两个整数相加值的结果链表。
例如:链表 1 为 9->3->7,链表 2 为 6->3,最后生成新的结果链表为 1->0->0->0。

算法实现:

1.将链表翻转
a.实现原理图:在这里插入图片描述

b.实现函数

   struct ListNode* reverseList(struct ListNode* head)

    struct ListNode *end, *temp;
    end=head;
    head=NULL;
    while(end!=NULL)
    {
        temp=head;
        head=end;
        end=end->next;
        head->next=temp;
         //reverse
    }
    return head;
  }
     struct ListNode* addInList(struct ListNode* head1, struct ListNode* head2 ) 

   {
 
 int jw=0, n;
  
     struct ListNode *head, *node;
     
    if(head1==NULL && head2!=NULL) return head2;
    if(head1!=NULL && head1==NULL) return head1;
    if(head1==NULL && head2==NULL) return NULL;
     
    head1=reverseList(head1);  //将链表反向
    head2=reverseList(head2);  //将链表反向
    head=NULL;
/* 实现两数相加,从低位开始 */
 while(head1!=NULL || head2!=NULL || jw>0) 
 // 对while中jw>0,防止两个链表在一样长 且在最后一位产生进位的情况,
    {
        n=jw;
        if(head1!=NULL)
        {
            n+=head1->val;
            head1=head1->next;
        }
        if(head2!=NULL)
        {
            n+=head2->val;
            head2=head2->next;
        }
        jw=n/10;
        node=(struct ListNode*)malloc(sizeof(struct ListNode));//建立一个节点申请一次空间
        node->val=n%10;
        node->next=head;
        head=node;
    }
return head;  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乔二梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值