如何从某个位置开始在双向链表中移动项目?

时间:2016-02-15 06:16:09

标签: list

我正在摆弄双重链接列表,我正在讨论如何将所有项目向右移动。我想知道你是如何做到这一点的,这样我就可以将所有项目从(位置2)开始向右移动10到右边一个空格而不是所有项目。

1 个答案:

答案 0 :(得分:0)

您可以通过仔细拼接双向链表来完成此操作。这是一个显示您从哪里开始的图表:

1 <-> 2 <-> 3 <-> ... <-> 9 <-> 10 <-> 11 <-> 12 <-> ...
^ head                           ^ p

这就是你想要实现的目标:

1 <-> 11 <-> 2 <-> 3 ... <-> 10 <-> 12 <-> ...

伪代码:

Node start = head.next;
Node end = p.next.next;
// connect 1 node to 11 node, in both directions
head.next = p.next;
p.next.prev = head;
// connect 11 node to 2 node, in both directions
head.next.next = start;
start.prev = head.next;
// connect 10 node to 12 node, in both directions
p.next = end;
end.prev = p;