class Solution {
private static ListNode reverse(ListNode head) {
ListNode pre = null;
ListNode cur = head;
ListNode next;
while (cur != null) {
next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}
private static ListNode add(ListNode a, ListNode b) {
int dig = 0;
ListNode head = new ListNode(0);
ListNode p = head;
while (a != null && b != null) {
int val = dig + a.val + b.val;
ListNode n = new ListNode(val % 10);
p.next = n;
p = n;
dig = val / 10;
a = a.next;
b = b.next;
}
while (a != null) {
int val = dig + a.val;
ListNode n = new ListNode(val % 10);
p.next = n;
p = n;
dig = val / 10;
a = a.next;
}
while (b != null) {
int val = dig + b.val;
ListNode n = new ListNode(val % 10);
p.next = n;
p = n;
dig = val / 10;
b = b.next;
}
if (dig != 0) {
ListNode n = new ListNode(dig);
p.next = n;
}
p = head.next;
head = null;
return p;
}
private static ListNode function(ListNode a, ListNode b) {
return reverse(add(reverse(a), reverse(b)));
}
private static void print(ListNode head) {
while (head != null) {
System.out.println(head.val);
head = head.next;
}
}
public static void main(String[] args) {
ListNode n1 = new ListNode(9);
ListNode n2 = new ListNode(3);
ListNode n3 = new ListNode(7);
// ListNode n4 = new ListNode(5);
// ListNode n5 = new ListNode(1);
n1.next = n2;
n2.next = n3;
// n3.next = n4;
// n4.next = n5;
ListNode n11 = new ListNode(6);
ListNode n22 = new ListNode(3);
n11.next = n22;
ListNode head = function(n1, n11);
print(head);
}
}
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
转载于:https://blog.51cto.com/tianyiya/2334841