class Solution
{
public:
ListNode *swapPairs(ListNode *head)
{
if (head == nullptr || head->next == nullptr)
return head;
ListNode dummy(-1);
dummy.next = head;
ListNode *pre = &dummy;
ListNode *cur = pre->next;
ListNode *next = cur->next;
while ((cur = pre->next) && (next = cur->next))
{
cur->next = next->next;
next->next = cur;
pre->next = next;
pre = cur;
}
return dummy.next;
}
};