给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
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 class addition { public static void main(String[] args) { Scanner in=new Scanner(System.in); ListNode listNode1=new ListNode(); ListNode head1 = listNode1; ListNode listNode2=new ListNode(); ListNode head2 =listNode2; System.out.println("please input a shu :"); while(in.hasNext()) { int value = in.nextInt(); if(value == 0) { break; } ListNode next = new ListNode(value); // 从头节点往后插入新的节点 head1.next = next; head1 = next; } while(in.hasNext()) { int value = in.nextInt(); if(value == 0) {//插入链表,以0作为结束标志 break; } ListNode next = new ListNode(value); // 从头节点往后插入新的节点 head2.next = next; head2 = next; } ListNode listNode = addTwoNumbers(listNode1, listNode2).next; while(listNode!=null){ if (listNode.next!=null){ System.out.print(listNode.val + "->"); } else { System.out.print(listNode.val ); } listNode=listNode.next; } } public static ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode root=new ListNode(0); ListNode cursor=root; int carry=0; while(l1!=null ||l2!=null || carry!=0){ int l1val=l1!=null? l1.val : 0; int l2val=l2!=null? l2.val : 0; int sumval=l1val+l2val+carry; carry=sumval/10; ListNode sumva=new ListNode(sumval%10); cursor.next=sumva; cursor=cursor.next; if (l1!=null)l1=l1.next; if (l2!=null)l2=l2.next; } return root.next; } }