链表相加
import java.util.*;
public class Solution {
public ListNode addInList (ListNode head1, ListNode head2) {
ListNode newHead1 = reverseList(head1);
ListNode newHead2 = reverseList(head2);
int rest = 0;
ListNode sumHead = null;
ListNode tmpNode = null;
while(newHead2 != null && newHead1 != null) {
int sum = newHead2.val + newHead1.val + rest;
if (sum >= 10) {
sum = sum % 10;
rest = 1;
} else {
rest = 0;
}
ListNode node = new ListNode(sum);
if (sumHead == null) {
sumHead = node;
} else {
tmpNode.next = node;
}
tmpNode = node;
newHead2 = newHead2.next;
newHead1 = newHead1.next;
}
ListNode notEnd = newHead2 == null ? (newHead1 == null ? null : newHead1) : newHead2;
while(notEnd != null) {
int sum = notEnd.val + rest;
if (sum >= 10) {
sum = sum % 10;
rest = 1;
} else {
rest = 0;
}
ListNode node = new ListNode(sum);
tmpNode.next = node;
tmpNode = node;
notEnd = notEnd.next;
}
if (rest == 1) {
ListNode node = new ListNode(1);
tmpNode.next = node;
}
return reverseList(sumHead);
}
private ListNode reverseList(ListNode head) {
if (head.next == null) {
return head;
}
ListNode newHead = reverseList(head.next);
head.next.next = head;
head.next = null;
return newHead;
}
}