package com.anuragkapur.ctci.linkedlists;
import com.anuragkapur.ds.linkedlist.SinglyLinkedListNode;
/**
* @author: anuragkapur
* @since: 14/06/14
*/
public class Prob2_5_1_SumLists {
/**
* Sum of digits stored in list. Digits stored in reverse order. Ex 7 -> 1 -> 6 = 617
*
* @param node1
* @param node2
* @param carry
* @return
*/
public SinglyLinkedListNode addList(SinglyLinkedListNode node1, SinglyLinkedListNode node2, int carry) {
int sum = 0;
if(node1 == null && node2 == null) {
if(carry > 0) {
return new SinglyLinkedListNode(Integer.toString(carry));
} else {
return null;
}
}
if(node1 != null) {
sum += Integer.valueOf(node1.getPayload());
node1 = node1.getNext();
}
if(node2 != null) {
sum += Integer.valueOf(node2.getPayload());
node2 = node2.getNext();
}
if(carry > 0) {
sum += carry;
}
SinglyLinkedListNode result = new SinglyLinkedListNode(Integer.toString(sum % 10));
result.setNext(addList(node1, node2, sum / 10));
return result;
}
}