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,但取决于函数参数。

09-27 18:13