首页 > 代码库 > Swap Nodes in Pairs

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 ) {        ListNode guard( -1 );        guard.next = head;        head = &guard;        while( head ) {            ListNode *node = head->next;            if( !node || !node->next ) { return guard.next; }            head->next = node->next;            node->next = head->next->next;            head->next->next = node;            head = node;        }        return guard.next;    }};

 递归:

 1 class Solution { 2 public: 3     ListNode *swapPairs( ListNode *head ) { 4         if( head == 0 || head->next == 0 ) { return head; } 5         ListNode *node = head->next; 6         head->next = swapPairs( node->next ); 7         node->next = head; 8         return node; 9     }10 };

 

Swap Nodes in Pairs