单链表按位求和的多种实现方式

本文探讨如何计算两个逆序存储的非负整数单链表的和。通过定义两个指针同步遍历链表,结合进位处理,逐位求和。当一个链表遍历完时,继续用另一个链表的剩余部分与进位值计算剩余的和。最后返回新链表的头指针。
摘要由CSDN通过智能技术生成

单链表求和

问题描述:

  • 给定两个链表,分别表示两个非负整数。它们的数字逆序存储在链表中,且每个结点只存储一个数字,计算两个数的和,并且返回
  • 和的链表头指针。
  • 例如输入:2->4->3、5->6->4,输出:7->0->8
    解题思路:
  • 首先定义两个指针分别指向两条链表的头结点同时定义一个进位标注符初始值为0,然后判断两个指针指向的节点都不为空时,定义一个新的节点节点的值为两个指针指向节点value
  • 值的和再加上进位标志符的值然后对10求余;同时更新进位标志符为当前和对10相除取整(向下取整)。依次同时向后移动两个指针,直到有一个指针指向链表尾。
  • if判断,如果指针1已经指向链表1的尾,那么此时新的节点值为指针2指向的节点值+进位标志值再对10取余。同时更新进位标志符的值为当前和对10取整。
  • 依次向后移动指针2,直到遍历结束。同理如果指针2已经指向链表2的尾,而1还没有,那么新的节点值为指针1指向节点值+进位标志值再对10取余…
public class AddofList {
    public static void main(String[] args) {
        int[] arr1 = {4, 9, 0, 4, 7, 1};
        int[] arr2 = {1, 7, 1, 5, 5, 4, 2, 8};
//        SNode head1 = new SNode(arr1[0]);
//        SNode curNode = new SNode();
//        head1.next = curNode;
//        for (int i = 1; i < arr1.length; i++) {
//            curNode.value = arr1[i];
//            curNode.next = new SNode();
//            curNode = curNode.next;
//        }
//        SNode head2 = new SNode(arr2[0]);
//        SNode curNode2 = new SNode();
//        head2.nex
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值