https://leetcode.com/problems/swap-nodes-in-pairs/

/**
 * 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) {
        /*
        通过pre来交换后两个元素
        p1=pre->next
        p2=pre->next->next
        
        p1->next=p2->next
        
        pre->next=p2
        p2->next=p1
        
        pre=p2
        边界:

        1.链表长度为单数,还有0的情况[当搜不全两个的时候直接return]
        
        */
        

        ListNode* pre=new ListNode(0),*pp=pre,*p1,*p2;
        pre->next=head;
        while(1){
            p1=p2=NULL;
            if(pre->next) p1=pre->next;
            if(p1 && p1->next) p2=p1->next;
            if(p1 && p2){
                p1->next=p2->next;
                pre->next=p2;
                p2->next=p1;
                pre=p1;
            }else{
                pre=pp->next;
                delete pp;
                return pre;
            }
        }
    }
};
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。