我正在尝试将节点向前移到链表中的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;
}
}
但是它只是交换节点的值。
我需要一种方法来更改节点本身的位置,而不仅仅是值。
答案 0 :(得分:0)
要交换单链列表中的两个节点,您需要进行4次交换,如果您有双链列表,则需要使用previous
指针与{{1 }}指针。
此代码应适用于您的列表,以交换两个节点:
next