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就可以不用单独处理了