链式A+B

来源:互联网 发布:java测试工程师笔试题 编辑:程序博客网 时间:2024/06/11 04:57

题目描述

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

给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。

测试样例:
{1,2,3},{3,2,1}
返回:{4,4,4}
public class Plus {//链式A+B    public ListNode plusAB(ListNode a, ListNode b) {        // write code here    if(a == null && b == null){    return null;    }    if(a == null)return b;    if(b == null)return a;        ListNode res = new ListNode(0);    ListNode ap = a;    ListNode bp = b;    ListNode result = res;        int flag = 0;    int value;    int val1;    int val2;        while(ap!=null || bp!=null || flag!=0){    val1 = (ap == null ? 0 : ap.val);    val2 = (bp == null ? 0 : bp.val);    value = val1 + val2 + flag;    flag = value/10;        ListNode node = new ListNode(value%10);    res.next = node;    res = res.next;    ap = (ap == null ? null:ap.next);    bp = (bp == null ? null:bp.next);    }      return result.next;    }}


0 0