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