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.
class Solution { public: ListNode *swapPairs(ListNode *head) { // Start typing your C/C++ solution below // DO NOT write int main() function ListNode dummynode(0), *h = &dummynode, *p = head, *n,*temp; h->next = head; while(p){ n = p->next; if (n){ h->next = n; temp = n->next; n->next = p; p->next = NULL; p = temp; h = h->next; h = h->next; }else{ h->next = p; break; } } return dummynode.next; } };