leetcode—Swap Nodes in Pairs
1.题目描述
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.
2.解法分析
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode *swapPairs(ListNode *head) {// Start typing your C/C++ solution below
// DO NOT write int main() function
if(head==NULL)return NULL;ListNode *cur=head;//增加一个头结点有利于是代码整齐
ListNode* myHead=new ListNode(-1);
ListNode* prev=myHead;prev->next=cur;while(cur!=NULL&&cur->next!=NULL)
{prev->next=cur->next;cur->next=cur->next->next;prev->next->next=cur;prev=cur;cur=cur->next;}prev=myHead->next;delete myHead;
return prev;
}};