Esempio n. 1
0
 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;
 }
Esempio n. 2
0
 public static void printNodes(NodeInteger node) {
   while (node != null) {
     System.out.print(node.getValue() + " --> ");
     node = node.getNext();
   }
   System.out.println("");
 }
Esempio n. 3
0
 public static void printLinkedList(SinglyLinkedListInteger list) {
   NodeInteger next = list.getHead();
   while (next != null) {
     System.out.print(next.getValue() + " --> ");
     next = next.getNext();
   }
   System.out.println("");
 }
Esempio n. 4
0
 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;
 }