public ListNode addInList (ListNode head1, ListNode head2) {
ListNode p1 = reverse(head1);
ListNode p2 = reverse(head2);
ListNode newHead = new ListNode(0);
ListNode p = newHead;
int carry = 0;
while (p1 != null || p2 != null || carry > 0) {
int x, y;
if (p1 == null) {
x = 0;
} else {
x = p1.val;
p1 = p1.next;
}
if (p2 == null) {
y = 0;
} else {
y = p2.val;
p2 = p2.next;
}
int add = x + y + carry;
p.next = new ListNode(add % 10);
p = p.next;
carry = add / 10;
}
return reverse(newHead.next);
}
public ListNode reverse(ListNode head){
ListNode pre = null;
ListNode curr = head;
while (curr != null) {
ListNode temp = curr.next;
curr.next = pre;
pre = curr;
curr = temp;
}
return pre;
}
链表相加2
最新推荐文章于 2025-12-16 16:02:25 发布
本文介绍了一种链表加法的方法,通过先反转两个输入链表,再逐位相加并处理进位,最后再次反转结果链表来获得正确的求和结果。此算法适用于需要进行链表数值运算的场景。
877

被折叠的 条评论
为什么被折叠?



