链表反转相加

package Test;



public class listReverse {
       public static void main(String[] args){
           listNode l1 = new listNode(1);
           listNode l2 = new listNode(2);
           listNode l3 = new listNode(3);
           l1.next = l2;
           l2.next = l3;
           listNode test = l1;
           while(test!=null){
               int a = test.number;
               System.out.print(a);
               test = test.next;
           }

           listReverse lr = new listReverse();
           listNode s =lr.reverse(l1);
           listNode tes = s;
           while(tes!=null){
               int a = tes.number;
               System.out.print(a);
               tes = tes.next;
           }

       }


    public listNode reverse(listNode node){
        listNode headNode = null;
        listNode preNode = null;
        listNode curNode = node;
        listNode nexNode = null;
        if(curNode == null){
            return null;
        }
        while(curNode!=null) {
            nexNode = curNode.next;
            if (nexNode == null) {
                headNode = curNode;
            }
            curNode.next = preNode;
            preNode = curNode;
            curNode = nexNode;
        }
        return headNode;

    }
}
package Test;

 class ListNode {
      int val;
      ListNode next;
      ListNode(int x) {
          val = x;
          next = null;
      }
  }

public class addnumber{

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {

        ListNode temp = new ListNode(-1);

        ListNode head = temp;

        int count = 0;

        while(l1 != null && l2 != null){
            head.next = new ListNode((l1.val+l2.val+count)%10);
            head = head.next;
            count = (l1.val+l2.val+count)/10;
            l1 = l1.next;
            l2 = l2.next;
        }
        while(l1 != null){
            head.next = new ListNode((l1.val+count)%10);
            head = head.next;
            count = (l1.val+count)/10;
            l1 = l1.next;
        }
        while(l2 != null){
            head.next = new ListNode((l2.val+count)%10);
            head = head.next;
            count = (l2.val+count)/10;
            l2 = l2.next;
        }
        if(count == 1){
            head.next = new ListNode(1);
            head = head.next;
        }
        return temp.next;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值