用N个节点旋转双向链表的Javascript程序
给定一个双向链表,将链表逆时针旋转 N 个节点。这里 N 是给定的正整数,并且小于链表中的节点数。
N = 2
轮换名单:
例子:
Input : a b c d e N = 2
Output : c d e a b
Input : a b c d e f g h N = 4
Output : e f g h a b c d
在亚马逊上问
要旋转双向链表,我们需要将第 N 个节点的下一个节点更改为 NULL,将最后一个节点的下一个节点更改为前一个头节点,将头节点的 prev 更改为最后一个节点,最后将 head 更改为第 (N+1) 个节点和 prev新的头节点为 NULL(双向链表中头节点的上一个为 NULL)
所以我们需要掌握三个节点:第 N 个节点、第 (N+1) 个节点和最后一个节点。从开始遍历列表并在第 N 个节点处停止。存储指向第 N 个节点的指针。我们可以使用 NthNode->next 获得第 (N+1) 个节点。继续遍历直到结束并存储指向最后一个节点的指针。最后,如上所述更改指针,并在 Last Print Rotated List 使用
打印列表函数。
Javascript
输出:
Given linked list
a b c d e
Rotated Linked list
c d e a b
更多详细信息请参考完整文章旋转 N 个节点的双向链表!