* Definition for singly-linked list.
* public class ListNode {
* ListNode(int x) { val = x; }
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode p1 = reverse(l1);
ListNode p2 = reverse(l2);
ListNode dummy = new ListNode(0);
ListNode curNode = dummy;
while (p1 != null || p2 != null) {
curNode.next = new ListNode(sum % 10);
curNode.next = new ListNode(sum);
return reverse(dummy.next);
public ListNode reverse (ListNode head) {
ListNode curNode = head, preNode = null, nextNode = null;
while (curNode != null) {