Swap Nodes in Pairs

 1     ListNode *swapPairs(ListNode *head) {
 2         if(head==NULL||head->next==NULL)//链表为空或者只有一个节点
 3             return head;
 4         ListNode *p,*q,*h;
 5         p=head;
 6         q=head->next;
 7         p->next=q->next;
 8         q->next=p;
 9         head=q;//头处理完了,其实这个时候就和一般情况下交换过之后是一样的了,就可以一般对待了
10         while(p->next&&p->next->next){//画个图可以帮助理解
11             h=p;
12             p=p->next;
13             q=p->next;
14             p->next=q->next;
15             q->next=p;
16             h->next=q;
17         }
18         return head;
19     }

AC

注意head节点要单独处理,不要以为用个h就可以不用单独处理了

posted on 2014-03-26 22:27  crane_practice  阅读(108)  评论(0编辑  收藏  举报

导航