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.
Code:
class Solution { public: ListNode *swapPairs(ListNode *head) { if(head==NULL) return head; ListNode *start = new ListNode(0); start->next=head; ListNode *pre=start; ListNode *cur=head; ListNode *nex=head->next; while(nex){ //exchanging.. pre->next=nex; cur->next=nex->next; nex->next=cur; //moving forward.. pre=cur; cur=cur->next; if(cur==NULL) break; nex=cur->next; } head=start->next; delete start; return head; } };