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() functionif(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;}};