public static SinglyLinkedListInteger sumLists( SinglyLinkedListInteger a, SinglyLinkedListInteger b) { SinglyLinkedListInteger newList = new SinglyLinkedListInteger(); int sum = 0; int carry = 0; NodeInteger nodeA = a.getHead(); NodeInteger nodeB = b.getHead(); NodeInteger newNode = new NodeInteger(carry); newList.setHead(newNode); while (nodeA != null && nodeB != null) { sum = nodeA.getValue() + nodeB.getValue(); if (sum > 10) { carry = sum % 10; sum = sum / 10; } else { carry = 0; } newNode.setValue(newNode.getValue() + (sum)); newNode.setNext(new NodeInteger(carry)); newNode = newNode.getNext(); nodeA = nodeA.getNext(); nodeB = nodeB.getNext(); } return newList; }
public static void printNodes(NodeInteger node) { while (node != null) { System.out.print(node.getValue() + " --> "); node = node.getNext(); } System.out.println(""); }
public static void printLinkedList(SinglyLinkedListInteger list) { NodeInteger next = list.getHead(); while (next != null) { System.out.print(next.getValue() + " --> "); next = next.getNext(); } System.out.println(""); }
public static NodeInteger sumListsRecursive( SinglyLinkedListInteger a, SinglyLinkedListInteger b, int carry) { NodeInteger nodeA = a.getHead(); NodeInteger nodeB = b.getHead(); if (nodeA == null || nodeB == null) { if (carry > 0) { return new NodeInteger(carry); } else { return null; } } int sum = nodeA.getValue() + nodeB.getValue() + carry; if (sum > 10) { carry = sum % 10; sum = sum / 10; } else { carry = 0; } NodeInteger result = new NodeInteger(sum); a.setHead(nodeA.getNext()); b.setHead(nodeB.getNext()); result.setNext(sumListsRecursive(a, b, carry)); return result; }