Java链表

本文介绍了链表的基本概念,包括单向、双向和循环链表的特点,以及它们在内存分配、操作速度上的优势与劣势。重点讲解了链表与数组的比较,并详细阐述了单向链表的插入和删除操作以及双向链表和循环链表的设计优化。
摘要由CSDN通过智能技术生成

链表概念

        是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。

        链表由一系列结点组成,每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

链表和数组的比较

  • 链表因为内存是动态分配的所以添加和删除快,但是查询速度慢
  • 数组因为有索引所以查找快,但是添加和删除慢,因为每次都要创建新的数组
  • 链表结构可以克服数组链表需要预先知道数据大小的缺点

单向链表的介绍

        单向链表只可向一个方向遍历,一般查找一个节点的时候需要从第一个节点开始每次访问下一个节点,一直访问到需要的位置。而插入一个节点,对于单向链表,我们只提供在链表头插入,只需要将当前插入的节点设置为头节点,next指向原头节点即可。删除一个节点,我们将该节点的上一个节点的next指向该节点的下一个节点

 
private static class Node<E> {
    E item;
    Node<E> next;

    Node(E element, Node<E> next) {
        this.item = element;
        this.next = next;
    }
}

 双向链表的介绍

        对于单项链表,我们如果想在尾部添加一个节点,那么必须从头部一直遍历到尾部,找到尾节点,然后在尾节点后面插入一个节点。这样操作很麻烦,如果我们在设计链表的时候多个对尾节点的引用,那么会简单很多。

private static class Node<E> {
    E item;
    Node<E> next;
    Node<E> prev;

    Node(Node<E> prev, E element, Node<E> next) {
        this.item = element;
        this.next = next;
        this.prev = prev;
    }
}

 循环链表介绍

        ​​​​​​​循环链表是一种链表的变体,它与单向链表相似,但是有一个重要的区别:循环链表的最后一个节点指向第一个节点,形成一个环状结构。循环链表是一种有用的数据结构,适用于需要从链表的任何节点开始遍历的场景。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值