首页 > 代码库 > 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.

 

设置个头结点,便于操作,每两个就反转

 1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     ListNode *swapPairs(ListNode *head) {12         if( !head ) return head;13         ListNode node(-1);  //设置头结点14         node.next = head;15         ListNode* pre = &node;16         ListNode* p = head;17         while( p && p->next ) { //如果当前节点及下一个节点存在18             pre->next = p->next;19             p->next = p->next->next;20             pre->next->next = p;21             pre = p;22             p = p->next;23         }24         return node.next;25     }26 };

 

Swap Nodes in Pairs