import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head1 ListNode类
* @param head2 ListNode类
* @return ListNode类
*/
public ListNode revers(ListNode head) {
ListNode cur = head.next;
ListNode curNext = cur.next;
head.next = null;
while (true) {
cur.next = head;
head = cur;
cur = curNext;
if (cur == null) {
break;
}
curNext = cur.next;
}
return head;
}
public ListNode addInList (ListNode head1, ListNode head2) {
head1 = revers(head1);
head2 = revers(head2);
int n = 0;
ListNode head = null;
ListNode cur = head;
while (head1 != null && head2 != null) {
int val = head1.val + head2.val + n;
if (val >= 10) {
n = 1;
val = val % 10;
} else {
n = 0;
}
ListNode node = new ListNode(val);
if (head == null) {
head = node;
cur = head;
} else {
cur.next = node;
cur = cur.next;
}
head1 = head1.next;
head2 = head2.next;
}
while (head1 != null) {
int val = head1.val + n;
if (val >= 10) {
n = 1;
val = val % 10;
} else {
n = 0;
}
ListNode node = new ListNode(val);
cur.next = node;
cur = cur.next;
head1 = head1.next;
}
while (head2 != null) {
int val = head2.val + n;
if (val >= 10) {
n = 1;
val = val % 10;
} else {
n = 0;
}
ListNode node = new ListNode(val);
cur.next = node;
cur = cur.next;
head2 = head2.next;
}
if (n == 1) {
ListNode node = new ListNode(1);
cur.next = node;
cur = cur.next;
}
head = revers(head);
return head;
}
}