24. Swap Nodes in Pairs

Given a linked list, swap every two adjacent nodes and return its head.

For example,
Given1->2->3->4, you should return the list as2->1->4->3.

Your algorithm should use only constant space. You maynotmodify the values in the list, only nodes itself can be changed.

题目大意:

交换每两个节点的位置。

代码如下:

/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode(intx):val(x),next(NULL){}*};*/classSolution{public:ListNode*swapPairs(ListNode*head){ListNode*left,*right,*pre,*p;pre=NULL;//记录每两个节点前面的那个节点p=head;while(p!=NULL&&p->next!=NULL){left=p;right=p->next;left->next=right->next;right->next=left;if(pre!=NULL){pre->next=right;}else//链表的头两个节点交换位置{head=right;}pre=left;p=left->next;}returnhead;}};

2016-08-12 23:51:00