当前位置:   article > 正文

Java中链表(Linked list)用法(单链表,双链表)_java linkedlist用法

java linkedlist用法

1.链表的概念

  • 链表是一种动态数据结构,他的特点是用一组任意的存储单元(可以是连续的,也可以是不连续的)存放 数据元素。
  • 链表中每一个元素成为 “结点” , 每一个结点都是由数据域指针域组成的, 每个结点中的指针域指向下一 个结点
  • Head 是 “头指针” , 表示链表的开始, 用来指向第一个结点, 而最后一个指针的指针域NULL( 空地址 ) ,表示链表的结束。
  • 可以看出链表结构必须利用指针才能实现,即一个结点中必须包含一个指针变量,用来存放下一个结点的 地址。 实际上,链表中的每个结点可以用若干个数据和若干个指针。

单链表:结点中只有一个指针的链表称为单链表,这是最简单的链表结构。
其节点由两部分构成:

  • data域:数据域,用来存储元素数据
  • next域:用于指向下一节点
    单链表

双链表:有前后两个指针的链表。
其节点由三部分构成:

  • data域:数据域,用来存储元素数据
  • next域:用于指向后一节点
  • front域:用于指向前一节点
    双链表

2.链表的操作

2.1 单链表的操作

2.1.1 插入节点

单链表插入节点主要分两步,顺序不可替换:

1.先将x->next指向A2
2.再将A1->next指向x
插入x

2.1.2 删除节点

删除节点其实只需要一步

A1->next 指向A3就行,此时A2会被自动回收
删除节点

2.1.3 单链表的缺点

通过对单链表的分析,可以看出单链表有如下缺点:

  1. 单链表的查找方法只能是一个方向
  2. 单链表不能自我删除,需要靠上一节点进行辅助操作。

2.2 双链表的操作

2.2.1 插入节点

双链表的操作会比单链表复杂很多,顺序也可以是2143,其他的可以自己想一想,只要不断就行。

  1. x->next指向A2
  2. A1->next指向x
  3. x->prev指向A1
  4. A2->prev指向x
    双链表插入

2.2.2 删除节点

删除节点容易很多,先后顺序也不是很重要

A3->prev指向A1
A1->next指向A3
删除节点

3.Java中链表的使用

以下内容参考Java LinkedList。更详细可以去这里看。
现在来讲Java要用到链表应该怎么写。

ArrayList和LinkedList都实现了链表,两者的区别在于与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修改的操作效率较低。

链表用LinkedList较多。

3.1 Java中链表的操作

LinkedList 类位于 java.util 包中,使用前需要引入它,语法格式如下:

// 引入 LinkedList 类
import java.util.LinkedList; 

LinkedList<E> list = new LinkedList<E>();   // 普通创建方法
或者
LinkedList<E> list = new LinkedList(Collection<? extends E> c); // 使用集合创建链表
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

创建一个简单的链表实例:

import java.util.LinkedList;

public class RunoobTest {
    public static void main(String[] args) {
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Weibo");
        System.out.println(sites);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

以上实例,执行输出结果为:

[Google, Runoob, Taobao, Weibo]
  • 1

其他操作可参考这个表格

方法描述
addFirst()在表头增加一个元素
addLast()在表尾增加一个元素
removeFirst()从表头移除一个元素
removeLast()从表尾移除一个元素
getFirst()获得表头的元素
getLast()获得表尾的元素

3.2 Java实现链表

想看Java中链表是如何实现以及基本的操作可以看这个博客,讲的很清楚,我就不在这里贴代码了。java ListNode 链表

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/823044
推荐阅读
相关标签
  

闽ICP备14008679号