Esempio n. 1
0
            public ListNode AddTwoNumbers(ListNode l1, ListNode l2)
            {
                ListNode EmptyNode = new ListNode(0);
                ListNode ReturnLN = new ListNode((l1.val + l2.val) % 10);
                ListNode CurrentNode1 = l1, CurrentNode2 = l2, CurrentNode = ReturnLN;
                bool Carry = l1.val + l2.val > 9;

                while ((CurrentNode1 != null && CurrentNode1.next != null) || (CurrentNode2 != null && CurrentNode2.next != null))
                {
                    int IntA, IntB;
                    if (CurrentNode1 == null || CurrentNode1.next == null) { IntA = 0; } else { IntA = CurrentNode1.next.val; }
                    if (CurrentNode2 == null || CurrentNode2.next == null) { IntB = 0; } else { IntB = CurrentNode2.next.val; }
                    int tempSum = IntA + IntB + (Carry ? 1 : 0);
                    CurrentNode.next = new ListNode(tempSum % 10);
                    Carry = tempSum > 9;
                    CurrentNode = CurrentNode.next == null ? null : CurrentNode.next;
                    CurrentNode1 = CurrentNode1 == null || CurrentNode1.next == null ? null : CurrentNode1.next;
                    CurrentNode2 = CurrentNode2 == null || CurrentNode2.next == null ? null : CurrentNode2.next;
                }

                if (Carry)
                {
                    CurrentNode.next = new ListNode(1);
                }
                return ReturnLN;
            }
Esempio n. 2
0
 private ListNode PushNodes(int[] DataToPush)
 {
     ListNode InitNode = new ListNode(DataToPush[0]);
     ListNode tempNode = InitNode;
     for (int i = 1; i < DataToPush.Length; i++)
     {
         tempNode.next = new ListNode(DataToPush[i]);
         tempNode = tempNode.next;
     }
     return InitNode;
 }