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;