两个两个地交换,时间O(n),空间O(1)。
class Solution {
public:
ListNode *swapPairs(ListNode *head) {
if(head == NULL || head->next == NULL)
return head;
ListNode dummy(-1);
ListNode *prev, *cur, *next;
for(prev = &dummy, cur = head, next = cur->next; next;
prev = cur, cur = cur->next, next = cur?cur->next:NULL)
{
prev->next = next;
cur->next = next->next;
next->next = cur;
}
return dummy.next;
}
};