/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode head = new ListNode(0);
ListNode p = l1, q = l2, cur = head;
int flag = 0;
while (p != null || q != null) {
int x = (p != null) ? p.val : 0;
int y = (q != null) ? q.val : 0;
int sum = x + y + flag;
flag = sum / 10;
cur.next = new ListNode(sum % 10);
cur = cur.next;
if (p != null) p = p.next;
if (q != null) q = q.next;
}
if (flag > 0)
cur.next = new ListNode(flag);
return head.next;
}
}