初次了解ListNode,针对ListNode的理解「建议收藏」

初次了解ListNode,针对ListNode的理解「建议收藏」关于ListNodepublicclassListNode{intval;ListNodenext;//链表指向的下一个值的指针ListNode(intx){val=x;}//这个方式赋值}我想到的几点事项定义链表ListNode时,链表的首个值不能为0,当首个参数为0时,代表着链表为空。 只需要定义一个List…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

关于ListNode

public class ListNode{
    int val;
    ListNode next;        //链表指向的下一个值的指针
    ListNode(int x){val = x;}   //这个方式赋值
}

Jetbrains全家桶1年46,售后保障稳定

我想到的几点事项

  • 定义链表ListNode时,
  1. 链表的首个值不能为0,当首个参数为0时,代表着链表为空。
  2. 只需要定义一个ListNode xx = new ListNode(0);即可。即只定义一个空链表。
  3. 不需要定义长度 。
  • 赋值时
  1. 通过xx.next = new ListNode(4);来赋值,注意此时是赋值给下一个指针指向的位置,此时此链表一个值,值为4。
  2. 通过一个链表指向原链表地址,赋值完成时,打印原链表的指针地址。获取所有值。(后面的打印想不太明白,有待研究)
  • 取值时
  1. 取第一个值时,只需要xx.val即可。
  2. 取第二或之后的值时,需要xx = xx.next;int x = xx.val;这个方式取值。

下面是LeetCode第二题时的解,通过这个解来了解更容易理解。

输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)  两个已知链表对象ListNode l1, ListNode l2
输出:7 -> 0 -> 8
原因:342 + 465 = 807

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode xList = new ListNode(0);//上来链表为空,所以第一位为0
        ListNode newList = xList;
        System.out.println(xList + "==" + newList);
        int curr = 0;
        while(l1 != null || l2 != null){
            //取值
            int x = l1 != null?l1.val:0;
            int y = l2 != null?l2.val:0;
            //System.out.println(x + "==" + y);
            //计算
            int sum = curr + x + y;
            //存值
            curr = sum /10;//取整
            newList.next = new ListNode(sum%10);//取余先给下一个位置赋值
            //移动指针指向下一个值
            newList = newList.next;
            System.out.println(xList + "==" + newList + "==" + xList.next);
            //System.out.println(newList.val);
            //取下一个节点的指针
            if(l1 != null)l1 = l1.next;
            if(l2 != null)l2 = l2.next;
        }

        if(curr > 0){
            newList.next = new ListNode(curr);
        }
        return xList.next;
    }
}

打印出来的结果

ListNode@52cc8049==ListNode@52cc8049

ListNode@52cc8049==ListNode@133314b==ListNode@133314b ListNode@52cc8049==ListNode@b1bc7ed==ListNode@133314b ListNode@52cc8049==ListNode@7cd84586==ListNode@133314b

[7, 0, 8]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215891.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 有关单片机的毕业设计_1500一套毕业设计贵吗

    有关单片机的毕业设计_1500一套毕业设计贵吗对大部分同学来说,毕业设计根本不知道从哪下手,完全处于蒙圈状态,为帮助大家能顺利毕业,精心准备800多套单片机毕业设计与您分享!其中有基于单片机设计的数字示波器、倒车雷达、电子密码锁、智能家居、停车场管理系统、万年历、智能插座等不同方向的典型设计实例,每个实例都提供了设计报告、源代码、电路图等全部设计资料,这些设计资料有利于即将毕业的同学分析、理解并进行毕业设计的制作和论文的编写。下载链接见:800多套单片机毕业设计-阿波罗代码网0001、PC机与单片机通信(RS232协议)000.

    2022年10月4日
    2
  • pycharm输入不了中文_pycharm可以设置成中文吗

    pycharm输入不了中文_pycharm可以设置成中文吗ubuntu18.04中PyCharm当全拼输入2~3个汉字时,会被强行打断,然后就无法继续输入(也无法切换中英文),并且汉字下会有下划线。点击菜单“Help|EditCustomVMoptions…”添加-Drecreate.x11.input.method=true到最后一行重启编辑器…

    2022年8月28日
    3
  • js 判断字符串中是否包含某个字符include的坑「建议收藏」

    js 判断字符串中是否包含某个字符include的坑「建议收藏」方法一indexOf()(推荐)varstr=”123″;console.log(str.indexOf(“3″)!=-1);//trueindexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现,则该方法返回-1。方法二test()varstr=”123”;varreg=RegExp(/3/);console.log(reg.test(str));//truetest()方法用于检索字

    2022年10月6日
    4
  • 记录 linux 下 部署 tomcat

    记录 linux 下 部署 tomcat

    2021年8月31日
    63
  • 什么是缓存雪崩、击穿、穿透?

    什么是缓存雪崩、击穿、穿透?什么是缓存雪崩、击穿、穿透?用户的数据一般都是存储于数据库,数据库的数据是落在磁盘上的,磁盘的读写速度可以说是计算机里最慢的硬件了。当用户的请求,都访问数据库的话,请求数量一上来,数据库很容易就奔溃的了,所以为了避免用户直接访问数据库,会用Redis作为缓存层。因为Redis是内存数据库,我们可以将数据库的数据缓存在Redis里,相当于数据缓存在内存,内存的读写速度比硬盘快好几个数量级,这样大大提高了系统性能。引入了缓存层,就会有缓存异常的三个问题,分别是缓存雪崩、缓存击穿、缓存穿透。

    2022年6月24日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号