自定义实现Java ListNode链表

写在前面

今天写代码的时候,发现我居然被Java的ListNode的输入卡了半天,所以就打算写一篇博客来整理一下ListNode。

链表的定义

首先ListNode就是链表,它的基本结构如下:
在这里插入图片描述
及一个包含数据,和指针的结构,我们将一个节点的指针的节点指向下一个节点,这样就形成了一串链式结构,并称之为:链表。

所以对于链表的定义如下:


/**
 * Java ListNode 链表的各种定义方法
 * 
 * @作者(yequan17)
 * @版本(2021.12.6)
 */
public class JListNode
{
   
    /**
     * 基本结构
     */
    class ListNodeBasicStructure{
            //类名:Java类就是一种自定义的数据结构。
        int val;                          //数据:节点数据。
        ListNodeBasicStructure next;      //对象:引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似。
    }
    
    /**
     * 添加构造方法方便初始化
     */
    class ListNodeConstructor{
               //类名:Java类就是一种自定义的数据结构。
        int val;                          //数据:节点数据。
        ListNodeConstructor next;         //对象:引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似。
        
        ListNodeConstructor(int val){
        //构造方法:构造方法和类名相同
            this.val=val;                 //把接收的参数赋值给当前类的val变量
        }
    }
    
    /**
     * 范型写法:使用范型可以兼容不同的数据类型
     */
    class ListNodeParadigm<E>{
               //类名:Java类就是一种自定义的数据结构。
        E val;                            //数据:节点数据。
        ListNodeParadigm<E> next;         //对象:引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似。
        
        ListNodeParadigm(E val){
             //构造方法:构造方法和类名相同
            this.val=val;                 //把接收的参数赋值给当前类的val变量
        }
    }
    
}

我们逐个来看:

	/**
     * 基本结构
     */
    class ListNode{
            //类名:Java类就是一种自定义的数据结构。
        int val;            //数据:节点数据。
        ListNode next;      //对象:引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似。
    }

这是最基本的链表结构,即一个数据一个指向下一个节点的指针或者说是指向下一个节点对象的引用。

但是这不并能满足我们的需要,因为我们在使用一个对象前必须对其进行初始化,如果不初始化,Java也会对其进行初始化。
所以我们将其修改为:

/**
     * 添加构造方法方便初始化
     */
    class ListNode{
               //类名:Java类就是一种自定义的数据结构。
        int val;                          //数据:节点数据。
        ListNode next;         //对象:引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似。
        
        ListNode(int val){
        //构造方法:构造方法和类名相同
            this.val=val;                 //把接收的参数赋值给当前类的val变量
        }
    }

这就足够了吗?当然不是,有时候我们需要的可能并不是一个包含整型数据的链表,它也可能是浮点型,甚至是一个一个对象,所以就有了范型下链表的表示:

/**
     * 范型写法:使用范型可以兼容不同的数据类型
     */
    class ListNode{
               //类名:Java类就是一种自定义的数据结构。
        E val;                            //数据:节点数据。
        ListNode<E> next;         //对象:引用下一个节点对象。在Java中没有指针的概念,Java中的引用和C语言的指针类似。
        
        ListNode(E val){
             //构造方法:构造方法和类名相同
            this.val=val;                 //把接收的参数赋值给当前类的val变量
        }
    }

链表的基本操作

好的在上面我们已经知道了链表是如何定义的,那么接下来,我们就来对链表进行一些最基本的在操作吧,它包括遍历链表、插入一个新的节点、置换一个节点和删除一个节点。

我们先来看链表的遍历。
在这里插入图片描述
再看一遍链表的结构,遍历链表就像遍历数组一样,从头到尾一个一个走就行,和数组不一样的是,我们遍历数组是根据数组的下标从零开始,依次前进。那么如何遍历链表呢?

我们发现,现在有两个问题摆在我们的面前࿱

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值