24 Swap Nodes in Pairs
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given 1->2->3->4, you should return the list as 2->1->4->3.Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
The Idea: Swap the value of every two adjacent elements, while making sure to check for all instances of nullptr dereferences.
void swapNode(ListNode *one, ListNode *two) {
    int temp = one->val;
    one->val = two->val;
    two->val = temp;
}
ListNode* swapPairs(ListNode* head) {
    // empty or single node list
    if (!head || !head->next) return head;
    ListNode *itr, *prev;
    itr = prev = head;
    while (itr->next) {
        swapNode(itr, itr->next);
        if (itr->next && itr->next->next) {
            itr = itr->next->next;
        }
        else break;
    }
    return head;
}Last updated
Was this helpful?