Java链表结构

Java链表结构

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

链表在日常开发中可能没有接触到,但其实很多数据类型底层都是链表结构,最常见的就是java集合,比如linkedList,HashMap等等。

链表优点在于,删除、新增快,只要操作节点指向即可。缺点就在于查找效率慢,因为要遍历每一个节点,不向数组一样可以通过索引直接访问。

了解链表结构
//链表类
public class ListNode {
    int val;  // value
    ...
    ListNode next; // 下一节点指向
}

程序中的存储方式
Java链表结构_第1张图片

代码实现
/**
 * @author wjb
 * @version 1.0
 * @description: 链表结构
 * @date 2021/9/15 16:09
 */
public class ListNode {
    int val;
    ListNode next;
    
    ListNode(int x) {
        val = x;
    }

    // 添加新的结点
    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.val);
        if (this.next != null) {
            System.out.print("-->");
            // 递归打印
            this.next.print();
        }
    }
}

然后就可以直接创建链表对象,添加节点,打印节点信息,看着下面添加节点的方式是不是和自己经常用的集合添加元素的方式一样?

public static void main(String[] args) {
    ListNode node = new ListNode(1);
    node.add(2);
    node.add(3);
    node.add(4);
    node.add(5);
    node.print();
 }

明白了链表结构之后,方便我们就可以去刷leetcode,熟悉集合底层代码等等。

你可能感兴趣的:(Java,链表,java,数据结构)