第4题:LinkedList是单向链表还是双向链表
📚 回答:
-
答案 :
LinkedList是双向链表。 -
底层原理:
- 每个
Node节点除了维护自身的值外,还维护了两个指针:- 一个指向前一个节点(
prev)。 - 一个指向后一个节点(
next)。
- 一个指向前一个节点(
- 这种设计使得
LinkedList可以从任意节点向前或向后遍历,灵活性更高。
- 每个
-
底层源码:
java// 源码位置:java.util.LinkedList.Node 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; } }
💡 面试官视角:
- 面试官可能会问"为什么
LinkedList选择双向链表而不是单向链表?"答:双向链表支持双向遍历,能够更高效地处理头部和尾部的操作,同时在某些场景下(如删除指定节点)可以避免额外的遍历开销。