美文网首页
[链表] 求用链表表示的两个整数相加得到的链表

[链表] 求用链表表示的两个整数相加得到的链表

作者: 周末的游戏之旅 | 来源:发表于2019-09-23 11:37 被阅读0次

问题描述

给定两个用链表表示的整数,每个节点包含一个数位。这些数位时反向存放的,也就是个位排在链表首部。
编写函数对这两个整数求和并用链表形式返回结果.
例如:364 表示为 4->6->3,789表示为 9->8->7,
输入链表4->6->3 和 9->8->7
返回链表 3->5->1->1 (表示1153的链表)

namespace LinkListAdd
{
    class Program
    {
        static void Main(string[] args)
        {
            LinkedList<int> a = new LinkedList<int>();
            a.AddLast(4);
            a.AddLast(6);
            a.AddLast(3);
            LinkedList<int> b = new LinkedList<int>();
            b.AddLast(9);
            b.AddLast(8);
            b.AddLast(7);

            LinkedList<int> r = LinkAdd(a, b);
            LinkedListNode<int> rNode = r.First;
            while (rNode != null)
            {
                Console.WriteLine(rNode.Value);
                rNode = rNode.Next;
            }
        }

        static LinkedList<int> LinkAdd(LinkedList<int> a,LinkedList<int> b)
        {
            LinkedListNode<int> tempA = a.First;
            LinkedListNode<int> tempB = b.First;

            LinkedList<int> result = new LinkedList<int>();

            //进位数(两个相同位的数相加后 需要进位的数)
            int addForward = 0;

            //其中一个链表不为空 或者 进位数不为0,当两个数相加完毕后,可能链表为空但还有进位的数
            while (tempA != null || tempB != null || addForward!=0)
            {
                int numA = tempA != null ? tempA.Value : 0;
                int numB = tempB != null ? tempB.Value : 0;

                //相加
                int currentNum = numA + numB + addForward;

                //进位
                if (currentNum > 9)
                {
                    addForward = currentNum /10;
                    currentNum %= 10;
                }//不进位
                else
                {
                    addForward = 0;
                }
                //进表
                result.AddLast(new LinkedListNode<int>(currentNum));

                //链表递进
                tempA = tempA!= null ? tempA.Next : null;
                tempB = tempB!= null ? tempB.Next : null;
            }
            return result;
        }
    }
}

相关文章

  • LeetCode2

    用链表表示整数,求其相加得到的结果。考察基本的链表操作。因为用的是Java刷题,所以要清楚Java的链表实现。Ja...

  • [链表] 求用链表表示的两个整数相加得到的链表

    问题描述 给定两个用链表表示的整数,每个节点包含一个数位。这些数位时反向存放的,也就是个位排在链表首部。编写函数对...

  • 求用链表表示的两个整数相加得到的链表

    问题描述 给定两个用链表表示的整数,每个节点包含一个数位。这些数位时反向存放的,也就是个位排在链表首部。编写函数对...

  • iOS 面试题(13):求两个链表表示的数的和

    问题:给你两个链表,分别表示两个非负的整数。每个链表的节点表示一个整数位。 为了方便计算,整数的低位在链表头,例如...

  • Chapter 3链表

    单链表 problem2 两数相加 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序...

  • 两数相加 II

    题目: 题目的理解: 链表表示整数的每一位,获取出来组成一个整数。两个整数相加等到A。将A转成数组,倒序后存在链表...

  • python常用算法(链表篇)

    链表类 两个链表相加

  • LeetCode 链表题目 Add Two Numbers II

    这个题目内容是给定两个非空链表,每个链表表示一个非负整数,链表的每个节点存储整数的一位,且链表头为最高位,链表尾为...

  • 力扣算法 - 环形链表(判断是否有环)

    环形链表 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表...

  • leetcode -141. 环形链表 -https://lee

    环形链表 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表...

网友评论

      本文标题:[链表] 求用链表表示的两个整数相加得到的链表

      本文链接:https://www.haomeiwen.com/subject/nuwfyctx.html