📜  删除链表中间的Javascript程序

📅  最后修改于: 2022-05-13 01:57:43.403000             🧑  作者: Mango

删除链表中间的Javascript程序

给定一个单链表,删除链表的中间部分。例如,如果给定的链表是 1->2->3->4->5,那么链表应该修改为 1->2->4->5

如果有偶数个节点,那么就有两个中间节点,我们需要删除第二个中间元素。例如,如果给定的链表是 1->2->3->4->5->6,那么它应该被修改为 1->2->3->5->6。
如果输入链表为 NULL,那么它应该保持为 NULL。

如果输入链表有 1 个节点,则应删除该节点并返回一个新的头。

有效的解决方案:
做法:上述方案需要对链表进行两次遍历。可以使用一次遍历删除中间节点。这个想法是使用两个指针,slow_ptr 和 fast_ptr。两个指针都从列表的头部开始。当 fast_ptr 到达末尾时,slow_ptr 到达中间。这个想法与本文方法 2 中使用的想法相同。这篇文章中的额外内容是跟踪前一个中间节点,以便可以删除中间节点。

下面是实现。

Javascript


输出:

Given Linked List
1->2->3->4->NULL
Linked List after deletion of middle
1->2->4->NULL

复杂性分析:

  • 时间复杂度: O(n)。
    只需要遍历一次链表
  • 辅助空间: O(1)。
    因为不需要额外的空间。

详情请参考删除链表中间的完整文章!