将链表中的某个节点向前移动n个位置

时间:2019-02-24 23:02:05

标签: c++

我正在尝试将节点向前移到链表中的n个位置

例如

列表:1、2、3、4、5、6

将“ 2”向前移动3个位置

新列表:1、3、4、5、2、6

这是我尝试过的

void MoveNodeForward(Node* head, int x, int n)
{
    Node* t = head;

    while(t != NULL)
    {
        if(t->data == x)
        {
            for(int i=0; i<n && t->next != NULL; i++)
            {
                int temp = t->next->data;
                t->next->data = t->data;
                t->data = temp;
                t = t->next;
            }
        }

        t = t->next;
    }

}

但是它只是交换节点的值。

我需要一种方法来更改节点本身的位置,而不仅仅是值。

1 个答案:

答案 0 :(得分:0)

要交换单链列表中的两个节点,您需要进行4次交换,如果您有双链列表,则需要使用previous指针与{{1 }}指针。

此代码应适用于您的列表,以交换两个节点:

next