java - 关于反转单链表的递归实现问题

标签 java data-structures linked-list

如果我创建了一个插入顺序为 5,4,3 的链表。我使用头引用,因此链接列表存储为 3->4->5->null

当我想反转链表==原始插入顺序时,它会是
5->4->3->null。现在,如果这就是我的新列表的样子,我的头引用应该引用哪个节点,以便我添加到列表中的新元素仍然具有 O(1) 插入时间?

最佳答案

我认为 head,根据定义,总是指向列表的第一个元素。

如果要在 O(1) 内插入到链表的末尾,则保留两个引用,一个指向第一个元素,一个指向最后一个元素。然后添加到末尾是通过跟踪最后一个元素的最后一个引用来完成的,将新元素添加到最后一个元素之外,更新最后一个引用以指向新的最后一个元素。

插入到空列表成为一种特殊情况,因为您必须设置第一个和最后一个引用,而不仅仅是最后一个引用。类似地,从列表中删除一个元素。

关于java - 关于反转单链表的递归实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6076468/

相关文章:

java - 解析字符串时遇到问题

c - 通过重复存储单词的最佳树型

创建一个链表来注册 C 学生

ios - 使用 Objective C 和 GLKit 存储模型信息的数据结构

c - '0'在C中是什么意思?

c - C中递归地从链表中删除节点

ruby - 如何在 Ruby 中反转链表

java - 示例 Java 应用程序

java - Intellij IDEA : in a locked down environment, 如何将其注册到 JetBrains?

java - scala 2.8 隐式 java 集合转换