欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

构造链表,求和反转

程序员文章站 2022-05-18 18:08:28
还是要多练习输入输出啊。。。脱离leetcode就GG了。难受的呀老哥package sjms;public class testjd { static class ListNode{ ListNode next; int data; ListNode(int data){ this.data=data; } // 添加新的结点 public void add(int ....

还是要多练习输入输出啊。。。脱离leetcode就GG了。难受的呀老哥 

package sjms;

public class testjd {
    static class ListNode{
        ListNode next;
        int data;
        ListNode(int data){
            this.data=data;
        }
        // 添加新的结点
        public void add(int newval) {
            ListNode newNode = new ListNode(newval);
            if(this.next == null)
                this.next = newNode;
            else
                this.next.add(newval);
        }
        // 打印链表
        public void print() {
            System.out.print(this.data);
            if(this.next != null)
            {
                System.out.print("-->");
                this.next.print();
            }
        }
    }
    public static void main(String[] args) {

        ListNode l1 = new ListNode(1);	//创建链表对象 l1 (对应有参 和 无参 构造方法)
        l1.add(2);				//插入结点,打印
        l1.add(3);

        ListNode l2 = new ListNode(1);	//创建链表对象 l2(对应有参 和 无参 构造方法)
        l2.add(2);				//插入结点,打印
        l2.add(3);

        //l1.print();
        //l1= rev(l1);
       // l1.print();
        ListNode ans=new ListNode(-1);
        ans=addnode(l1,l2);
        ans.print();
    }

    //链表求和
    private static ListNode addnode(ListNode a,ListNode b){
        if(a==null)  return b;
        if(b==null) return a;

        ListNode dummy=new ListNode(-1);
        ListNode cur=dummy;

        int carry=0;
        int sum=0;
        while (a!=null||b!=null){
            //初始化sum
            sum=0;
            if(a!=null) {
                sum+=a.data;
                a=a.next;
            }
            if(b!=null){
                sum+=b.data;
                b=b.next;
            }

            sum+=carry;
            carry=sum/10;
            sum=sum%10;

            cur.next=new ListNode(sum);
            cur=cur.next;
        }
        if(carry!=0)  cur.next=new ListNode(carry);
        return dummy.next;

    }

    //反转链表
    private  static  ListNode rev(ListNode head){
        ListNode cur=null;
        ListNode pre=head;
        while(pre!=null){
            ListNode t=pre.next;
            pre.next=cur;
            cur=pre;
            pre=t;
        }
       return cur;
    }

}

 

本文地址:https://blog.csdn.net/qq_27500493/article/details/107360811