可能重复:
debug help - swap 2 nodes of double link listC++ LinkedList的交换节点
我试图写一个算法,可以在一个单链表在C++交换两个节点。这是我到目前为止有:
void swap(ListNode *node1, ListNode *node2)
{
ListNode *prev1 = head;
ListNode *prev2 = head;
//Search previous node for node1:
while(prev1->next!=node1 || prev1 != node1)
prev1 = prev1->getNext();
//Search previous node for node2:
while(prev2->next!=node2 || prev2 != node2)
prev2 = prev2->getNext();
if(node1->next==node2)
{ //This means node1 == prev2?
tail = node1;
node1->next = NULL;
head = node2;
node2->next = node1;
}
else if(node2->next==node1)
{ // node2 == prev1
tail = node2;
node2->next = NULL;
head = node1;
node1->next = node2;
}
if(node1->next == NULL)
{ //node1 is last
node1->next = node2->next;
tail = node2;
node2->next = NULL;
prev1->next = node2;
prev2->next = node1;
}
}
但我意识到,我可以得到的,就像如果有LL只有两个元素的不同案件的数量,或者如果他们给我们点2点1,等等等等,我之前意识到它不可能是复杂而丑陋的。那么如何编写一个交换两个节点的算法呢?
什么是* *的具体问题? – 2012-03-04 16:13:27
我们不会在堆栈溢出(这不是网络论坛或留言板)上“提供一些提示”。我们回答有关编程语言的具体问题。 – 2012-03-04 16:13:51
“如何交换链接列表中的两个节点”听起来像是一个非常合法和具体的问题,虽然是重复的。 – tenfour 2012-03-04 16:19:37