Possible Duplicate:
Reverse every k nodes of a linked list
假设链接列表为。调用reversek(3)将导致。我已经编写了反向函数,可以将其用作反向函数的辅助函数。这是我的反向函数,它从给定的起点反向到给定的终点:
void List::reverse(Node * & start, Node * & end)
{
Node *pter = start;
while (pter != NULL)
{
Node *tmp = pter->next;
pter->next = pter->prev;
pter->prev = tmp;
if (tmp == NULL)
{
endPoint = startPoint;
startPoint = pter;
}
pter = tmp;
}
我对如何实现reversek感到困惑,不胜感激。
最佳答案
尝试类似-
有2个指向链接列表头元素的指针(P1,P2)。
一个用于遍历列表(P1)。一旦遍历点到达列表中的第3个节点,则使用other(P2)交换元素。
现在将两个指针都移动到第4个节点。并再次继续遍历列表的其余部分。
在这里,您必须跟踪P1何时到达每个第三个节点。例如,这里是3,但取决于函数参数。