import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head1 ListNode类
* @param head2 ListNode类
* @return ListNode类
*/
public ListNode addInList (ListNode head1, ListNode head2) {
Stack<Integer> s1 = new Stack<>();
Stack<Integer> s2 = new Stack<>();
Stack<Integer> s3 = new Stack<>();
ListNode p1 = head1, p2 = head2;
while (p1 != null) {
s1.add(p1.val);
p1 = p1.next;
}
while (p2 != null) {
s2.add(p2.val);
p2 = p2.next;
}
int m = 0;
while (!s1.isEmpty() && !s2.isEmpty()) {
int x = s1.pop();
int y = s2.pop();
s3.add((x + y + m) % 10); // 0 0
m = (x + y + m) / 10;
}
while (!s1.isEmpty()) {
int x = s1.pop();
s3.add((x + m) % 10);
m = (x + m) / 10;
}
while (!s2.isEmpty()) {
int x = s2.pop();
s3.add((x + m) % 10);
m = (x + m) / 10;
}
if(m != 0)s3.add(m);
ListNode node = new ListNode(s3.pop());
ListNode head3 = node;
ListNode cur;
while(!s3.isEmpty()){
cur = new ListNode(s3.pop());
node.next = cur;
node = cur;
}
return head3;
}
}
三个栈实现链表相加。

京公网安备 11010502036488号