力扣-24.两两交换链表中的结点

题目描述

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。

class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        if(head==NULL||head->next==NULL){
            return head;
        }
        ListNode* pre = new ListNode(-1);
        pre->next = head;
        ListNode* temp = pre;
        ListNode* l1 = head;
        ListNode* l2 = head->next;
        while (l2){
            l1->next=l2->next;
            pre->next=l2;
            l2->next=l1;
            l1=l1->next;
            if(l1==NULL)
                break;
            l2=l1->next;
            pre=pre->next->next;
        }
        return temp->next;
    }
};

小结:后来才看到不能修改结点值,但是也不难

你可能感兴趣的:(力扣hot100,leetcode,链表,算法)