Leetcode 24. 两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {

public:
    //新增头结点便于操作
    //两个两个直接进行交换
    ListNode* swapPairs(ListNode* head) {
        if (!head || !head->next) return head;
         ListNode * newhead = new ListNode(0,head->next);
         ListNode* p = head, *p_pre = newhead,*q=p->next,*temp;
         while (p && p->next)
         {
             p->next = q->next;
             p_pre->next = q;
             q->next = p;

             p_pre = p;
             p = p->next;
            if(p) q = p->next;
         }
         return newhead->next;
    }
};
原文地址:https://www.cnblogs.com/lancelee98/p/13224461.html