自己寫的時候,想到了交換的方法,但是沒有想到前面的點沒有前繼,導致[1 2 3 4 5]只出現結果[1 3 5]。當時是這樣寫的:
while()
{
p=head->next;
head->next=p->next;
p->next=head;
head=p->next->next;
}
由於p前面沒有數據,導致消失。應該加一個前繼,不然鏈表斷了。
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
ListNode dummy(0),*pre=&dummy,*left(nullptr),*right(nullptr);
dummy.next=head;
while(pre!=NULL&&pre->next!=NULL&&pre->next->next!=NULL)
{
left=pre->next;
right=left->next;
left->next=right->next;
pre->next=right;
right->next=left;
pre=pre->next->next;
}
return dummy.next;
}
};