用于在链表中间插入节点的 Javascript 程序
给定一个包含n 个节点的链表。问题是在列表中间插入一个带有数据x的新节点。如果n是偶数,则在第(n/2)个节点之后插入新节点,否则在第(n+1)/2个节点之后插入新节点。
例子:
Input : list: 1->2->4->5
x = 3
Output : 1->2->3->4->5
Input : list: 5->10->4->32->16
x = 41
Output : 5->10->4->41->32->16
方法一(使用链表的长度):
使用一次遍历查找链接的节点数或长度。让它成为len 。计算c = (len/2),如果len是偶数,否则c = (len+1)/2,如果len是奇数。再次遍历前c个节点,在第c个节点之后插入新节点。
Javascript
Javascript
输出:
Linked list before insertion: 1 2 4 5
Linked list after insertion: 1 2 3 4 5
时间复杂度: O(n)
方法2(使用两个指针):
基于使用两个指针的龟兔算法,一个称为慢指针,另一个称为快指针。该算法有助于找到链表的中间节点。在这篇文章的正面和黑色分裂过程中进行了解释。现在,您可以在通过上述过程获得的中间节点之后插入新节点。这种方法只需要一次遍历列表。
Javascript
输出:
Linked list before insertion: 1 2 4 5
Linked list after insertion: 1 2 3 4 5
时间复杂度: O(n)
详情请参考完整文章将节点插入链表中间!