美文网首页
Java链表

Java链表

作者: Djbfifjd | 来源:发表于2020-10-14 23:07 被阅读0次

一、链表介绍

数组和链表都是最基础的线性数据结构,可以用来实现栈,队列等非线性,有特定应用场景的数据结构。数组作为数据存储结构有很多缺陷,在无序数组中搜索效率低,在有序数组中插入效率又很低,无论哪种情况删除操作效率都很低。而且数组一旦创建,大小不可更改。除非是要频繁通过下标访问数据,否则在很多场合都可以用链表替换数组。

1️⃣什么是链表?

链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表通常由一连串节点组成,每个节点包含该节点的数据和指向上一节点或者下一节点的引用(链接)。如下图,在数据结构中,a1里面的指针存储着a2的地址,这样一个链接一个,就形成了链表。

①相邻元素之间通过指针链接
②最后一个元素的后继指针为NULL
③在程序执行过程中,链表的长度可以增加或缩小
④链表的空间能够按需分配
⑤没有内存空间的浪费

2️⃣链表的优缺点?

①优点:

  1. 插入和删除时不需移动其他元素,只需改变指针,效率高。
  2. 链表各个节点在内存中空间不要求连续,空间利用率高。
  3. 大小没有固定,拓展很灵活。

②缺点:查找数据时效率低,因为不具有随机访问性。

3️⃣链表的种类

单向链表、双向链表、循环单链表、循环双链表等等。

二、单向链表

单向循环链表。与单向线性链表不同的是,链表尾节点的后指针指向头节点。首尾相接构成环状结构。

单向线性链表。单向链表是最简单的链表,单链表节点包含两部分内容,一是存储数据信息,二是存储指向下一个节点的指针,叫做后指针。最后一个节点叫做尾节点,尾节点的后指针为 NULL。其中第一个节点叫做头节点,指向头结点的指针叫做头指针。

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

三、双端链表

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

四、双向链表

双向循环链表。与双向线性链表相比,头节点中的前指针指向尾节点,尾节点的后指针指向头节点,构成环状结构。

双向线性链表。每个节点除了存放本身元素以外,还需要保存指向下一个节点的指针,叫做后指针,以及指向前一个节点的指针,叫做前指针。双向线性链表中头节点的前指针为空,以及尾节点后指针也是空指针。

相关文章

  • 链表

    单链表 C实现 Java实现 双链表 C实现 Java实现

  • 链表

    一、单向链表 单向链表的普通实现 Java实现: Kotlin实现: 单向链表的递归实现 Java实现: 二、双向...

  • 15反转链表

    题目描述 输入一个链表,反转链表后,输出新链表的表头。 Java实现

  • 数据结构 | 其二 链表

    冰河winner - 数据结构之链表 2.1 单向链表 数据结构(一) 单链表的实现-JAVA 2.2 双端链表 ...

  • LeetCode2

    用链表表示整数,求其相加得到的结果。考察基本的链表操作。因为用的是Java刷题,所以要清楚Java的链表实现。Ja...

  • HashMap

    HashMap 解决Hash冲突 java 中的HashMap 通过链表法解决Hash冲突 链表法 链表法就是将相...

  • 单向链表

    链表本身也是线性表,只不过物理存储上不连续 Node.java:结点类 LinkList.java:单向链表类(核...

  • 链表面试题Java实现【重要】

    链表面试题Java实现【重要】

  • 队列

    基于数组的循环队列 Java实现 基于链表的队列实现 Java实现

  • 单向链表反转(含图解)

    前言 上次讲解了单向链表的原理《Java实现单向链表功能》,今天拓展一下实现链表的翻转。下面直接上代码。 链表初始...

网友评论

      本文标题:Java链表

      本文链接:https://www.haomeiwen.com/subject/ggtvpktx.html