有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。
给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。
测试样例:
{1,2,3},{3,2,1}
返回:{4,4,4}public static ListNode plusAB(ListNode a, ListNode b) { if(a==null||b==null){ if(a!=null) return a; else if(b!=null) return b; else return null; } boolean jin=(a.val+b.val)>=10; ListNode root=new ListNode((a.val+b.val)%10); ListNode current=root; a=a.next; b=b.next; while(a!=null&&b!=null){ int sum=jin?a.val+b.val+1:a.val+b.val; if(sum>=10) jin=true; else jin=false; current.next=new ListNode(sum%10); current=current.next; a=a.next; b=b.next; } while(a!=null){ int sum=jin?a.val+1:a.val; if(sum>=10) jin=true; else jin=false; current.next=new ListNode(sum%10); current=current.next; a=a.next; } while(b!=null){ int sum=jin?b.val+1:b.val; if(sum>=10) jin=true; else jin=false; current.next=new ListNode(sum%10); current=current.next; b=b.next; } if(jin) current.next=new ListNode(1); return root; }