4.2 Java实现双向链表(完整代码及详细注释)
文章目录
1.什么是双向链表?
双向链表由多个节点组成,每个 节点(用于存储数据) 通过prev,next指针和前,后节点相互连接,
下一个节点的引用存放在上一个节点的next指针中, 上一个节点的引用存放在下一个节点的prev指针中,
从而构成了一个线性的链表 (它与数组的区别就是它可以不具空间连续性)
在java中一般通过定义节点Node类和API类的方式来实现链表
JDK中对链表LinkedList的节点的实现结构如下:
可以看到链表节点组成分为三部分:
存储数据的元素item , 当前节点下一节点的引用next, 当前节点上一节点的引用prev
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;
}
}
可以知道JDK的链表实现就是双向链表.
节点定义一般就放在API内部作为内部静态类使用,我们使用链表数据结构都是通过LinkedList API对外开放的接口进行调用的,
我们不允许直接对链表内部属性直接访问。
1.1 双向链表基本结构
下面我们学习最基本的链表结构,我们默认链表中的元素就是int类型数字。
如图所示:
作者:small-water
出处:https://www.cnblogs.com/small-water/p/17870051.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)