【Java数据结构】通过Java理解和实现——无头双向链表

简介: 【Java数据结构】通过Java理解和实现——无头双向链表

image.png

image.png

【Java数据结构】通过Java理解和实现——无头双向链表

🍉无头双向链表

🌵双链表概念及结构

🍌无头双向非循环链表接口实现(注释非常详细,我👴👴都能看懂)

🍈打印双链表

🍈头插法插入

🍈尾插法插入

🍈查找是否包含关键字key在双链表当中

🍈得到双链表的长度

🍈任意位置插入,第一个数据节点为0号下标

🍈删除第一次出现关键字为key的节点

🍈删除所有值为key的节点

🍈清空链表

🍉单链表和双链表到底有啥区别

🍉无头双向链表

🌵双链表概念及结构

【为什么引入双链表?】

 单链表的结点中只有一个指向其后继的指针,使得单链表要访问某个结点的前驱结点时,只能从头开始遍历,访问后驱结点的复杂度为O(1),访问前驱结点的复杂度为O(n)。为了克服上述缺点,引入了双链表。

 双链表的结点中有两个指针prev和next,分别指向前驱结点和后继结点。


image.png

🍌无头双向非循环链表接口实现(注释非常详细,我👴👴都能看懂)


image.png

🍈打印双链表

image.png

🍈头插法插入

image.png

🍈尾插法插入


image.png

🍈查找是否包含关键字key在双链表当中

image.png

🍈得到双链表的长度

image.png

🍈任意位置插入,第一个数据节点为0号下标

image.png

🍈删除第一次出现关键字为key的节点

首先判断头结点是否为null(链表是否为空),然后找要删除的节点,要删除的节点有三种情况

①关键字在头节点:将头节点下一个节点设置为新头节点

②关键字在尾巴结点:将尾节点上一个节点设置为新尾节点

③关键字不在头结点:则将key节点的前一个节点的后驱指向key节点的后一个节点,key节点的后一节点的前驱指向key节点前一节点


image.png

🍈删除所有值为key的节点

image.png

🍈清空链表

image.png

🍉单链表和双链表到底有啥区别

一、指代不同

1、双向链表:也叫双链表,是链表的一种,每个数据结点中都有两个指针,分别指向直接后继和直接前驱

2、单向链表:是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始。

二、优点不同

1、双向链表:从双向链表中的任意一个结点开始,都可以很方便地访问前驱结点和后继结点。

2、单向链表:单个结点创建非常方便,普通的线性内存通常在创建的时候就需要设定数据的大小,结点的访问方便,可以通过循环或者递归的方法访问到任意数据。

三、缺点不同

1、双向链表:增加删除节点复杂,需要多分配一个指针存储空间。

2、单向链表:结点的删除非常方便,不需要像线性结构那样移动剩下的数据,但是平均的访问效率低于线性表。



相关文章
|
3月前
|
存储 Java
|
6月前
|
存储 Java
Java 实现双链表
Java 实现双链表
26 0
|
6月前
|
存储 算法 Java
【数据结构与算法】5.详解双向链表的基本操作(Java语言实现)
【数据结构与算法】5.详解双向链表的基本操作(Java语言实现)
|
存储 Java
轻松拿捏链表(java)
轻松拿捏链表(java)
59 0
|
存储 算法 Java
Java LinkedList:探索双向链表的灵活应用
在Java编程中,LinkedList是一种重要的数据结构,它在内存中以双向链表的形式存储数据,为我们提供了一种动态而灵活的数据管理方式。本文将引导您深入了解Java中的LinkedList,包括其特点、用法、与ArrayList的比较,以及实际应用场景。
【Java 数据结构】双向链表(上)
上期我们实现了一下单链表,在Java(1.8)中,链表为 LinkedList,而底层是一个双向链表,跟 ArrayList 一样,LinkedList 也实现了 List 接口,这里我们画一个图,让大家简单见识下双向链表
【Java 数据结构】双向链表(上)
|
存储 Java
【Java 数据结构】双向链表(下)
上期我们实现了一下单链表,在Java(1.8)中,链表为 LinkedList,而底层是一个双向链表,跟 ArrayList 一样,LinkedList 也实现了 List 接口,这里我们画一个图,让大家简单见识下双向链表:
【Java 数据结构】双向链表(下)
|
存储 算法 Java
【Java 数据结构】单链表与OJ题(下)
链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。
【Java 数据结构】单链表与OJ题(下)
|
存储 Java C语言
【Java 数据结构】单链表与OJ题(上)
链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。
【Java 数据结构】单链表与OJ题(上)
|
Java
Java实现双向链表
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。
98 0