用于反转双向链表的 Javascript 程序
给定一个双向链表,任务是反转给定的双向链表。
例如,请参见下图。
(a) Original Doubly Linked List
(b) Reversed Doubly Linked List
这是一个反转双向链表的简单方法。我们需要做的就是交换所有节点的 prev 和 next 指针,更改 head(或 start)的 prev 并最终更改 head 指针。
Javascript
Javascript
输出:
Original linked list
10 8 4 2
The reversed Linked List is
2 4 8 10
方法二:
同样的问题也可以通过使用 Stacks 来完成。
脚步:
- 继续将节点的数据推入堆栈。 -> O(n)
- 不断弹出元素并更新双向链表
Javascript
输出:
Original linked list
10 8 4 2
The reversed Linked List is
2 4 8 10
时间复杂度: O(N)
辅助空间: O(N)
在这个方法中,我们遍历链表一次并将元素添加到堆栈中,然后再次遍历整体以更新所有元素。整体需要2n时间,也就是O(n)的时间复杂度。
有关详细信息,请参阅有关反向双向链表的完整文章!