栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

链表加法运算

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

链表加法运算

链表加法
public class ListNode {
    //这是一个节点类
    //里面保存值
    int val;

    //在一个类中定义自身的引用,为什么
    ListNode next;
    //存储的是下一个节点,可给他赋值,在这里是个引用

    //这是节点的构造方法,构造方法是干什么的,构造这样一个类
    // 一个类我觉得可以理解为一块存储空间
    //我是大哥,你来分配,我来决定这个世界的规则
    ListNode(int x){
        //传入一个x给上面的变量
        val=x;}
    public static String print(ListNode l)
    {
        StringBuilder sb = new StringBuilder();
        //遍历链表,缓冲区,缓冲区遍历。
        while(l != null)
        {
            //加入到缓冲区
            sb.append(l.val);
            //  又来下一个元素
            l = l.next;
        }
        //反转一下,输出才正确
        sb.reverse();
        //字符缓冲转化为数组
        return sb.toString();
    }
}
public class linkedlist {
    
    

    
    //返回一个新的链表表示他们的和



    public static ListNode addTwoNumbers(ListNode l1, ListNode l2){
        //首先创建一个虚设节点  哑结点  傀儡节点都可以
       ListNode dummyHead=new ListNode(0);
       
       ListNode p=l1,q=l2,curr=dummyHead;
       //创建一个哑节点相当于新建链表初始化。

       //定义一个表示进位的数
        int carry=0;
        while (p!=null||q!=null){
            //如果两个节点的变量 val不是空的,就把节点的值赋值给x,y
            int x=(p!=null)?p.val:0;
            int y=(q!=null)?q.val:0;
            int sum=carry+x+y;
            carry=sum/10;

            //curr就是表示新的节点的值
            curr.next=new ListNode(sum%10);

            curr=curr.next;
            //p和q节点都指向他们下一个节点
            if(p!=null) p=p.next;   //接着遍历循环  如果还有数值的话
            if(q!=null)q=q.next;
        }

        if(carry>0){

            //如果有进位比如从二位数进位到三位数,又在链上
            curr.next=new ListNode(carry);
        }

        //返回的是一个新的链表
        return dummyHead.next;
    }
    public static void main(String[] args) {
    
        ListNode l1 = new ListNode(2);
        ListNode l2 = new ListNode(5);


        ListNode listNode = l1.next = new ListNode(4);
        ListNode listNode1 = l2.next = new ListNode(6);


        listNode.next=new ListNode(8);
        listNode1.next=new ListNode(4);

        System.out.println(ListNode.print(addTwoNumbers(l1,l2)));
    }
}
总结:对类和对象有着更深的理解
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/962551.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号