额,个人修改了些许,用于整合和巩固自己的知识面。这里有个链接(里面有这道题的答案,可以参考):https://blog.youkuaiyun.com/qq_41389482/article/details/112171429
代码如下:
import java.util.*;
class ListNode {
int val;
ListNode next;
ListNode() {}
ListNode(int val) { this.val = val; }
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
public void addNode(int e){
ListNode newNode = new ListNode(e);
if(this.next == null) {
this.next = newNode;
}else {
this.next.addNode(e);
}
}
public void print() {
System.out.print(this.val);
if(this.next != null) {
System.out.print("-->");
this.next.print();
}
}
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode pre = new ListNode();
ListNode cur = pre;
int carry = 0;
while(l1!=null || l2!=null){
int x = l1 == null ? 0 : l1.val;
int y = l2 == null ? 0 : l2.val;
int sum = x + y + carry;
carry = sum / 10;
sum = sum % 10;
cur.next = new ListNode(sum);
cur = cur.next;
if(l1 != null)
l1 = l1.next;
if(l2 != null)
l2 = l2.next;
}
if(carry == 1)
cur.next = new ListNode(1);
return pre.next;
}
}
public class addNumbers{
public static void main(String args[]){
ListNode L1 = new ListNode(0);
ListNode L2 = new ListNode(0);
ListNode L3 = new ListNode(0);
System.out.println("请输入链表L1元素数量:");
Scanner input1 = new Scanner(System.in);
int m = input1.nextInt();
System.out.println("请依次输入L1的数据:");
int a[] = new int[m];
for(int i=0;i<m;i++){
Scanner input = new Scanner(System.in);
a[i]=input.nextInt();
L1.addNode(a[i]);
}
L1.next.print();
System.out.println("");
System.out.println("请输入链表L2元素数量:");
int n = input1.nextInt();
System.out.println("请依次输入L2的数据:");
int b[] = new int[n];
for(int i=0;i<n;i++){
Scanner input = new Scanner(System.in);
b[i]=input.nextInt();
L2.addNode(a[i]);
}
L2.next.print();
System.out.println("");
L3=L3.addTwoNumbers(L1,L2);
System.out.println("得到链L3的数据:");
L3.next.print();
System.out.println("");
/*while(L3.next!=null) {
System.out.print(L3.next.val+" ");
L3=L3.next;
}转化为数组的时候可以用到。*/
}
}
测试结果:
请输入链表L1元素数量:
3
请依次输入L1的数据:
1
2
3
1-->2-->3
请输入链表L2元素数量:
2
请依次输入L2的数据:
1
2
1-->2
2-->4-->3
该博客展示了如何使用Java实现将两个链表表示的数相加,通过模拟加法运算过程,逐位相加并处理进位,最后生成新的链表表示结果。示例代码中包括链表节点定义、添加节点、打印链表和两数相加的方法,并给出了测试用例。

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



