链表A+B

来源:互联网 发布:世界人工智能大会 北京 编辑:程序博客网 时间:2024/06/06 15:38

有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。

给定两个链表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;   }

0 0
原创粉丝点击