Leetcode——两两交换链表中节点问题

题目:

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例1:
在这里插入图片描述

输入:head = [1,2,3,4]
输出:[2,1,4,3]

示例 2:

输入:head = []
输出:[]

示例 3:

输入:head = [1]
输出:[1]

提示:

  • 链表中节点的数目在范围 [0, 100] 内
  • 0 <= Node.val <= 100

思路:

  1. 因为是两两交换的问题,这题我们可以采用迭代方式来实现。
  2. 首先,我们创建一个哑节点dummy位于列表的head节点之前,再创建pre=yummy,每次对pre后的两个节点进行交换。
  3. 交换之前的节点关系是 pre -> node1 -> node2,交换之后的节点关系要变成 pre -> node2 -> node1,此时令pre=node1,让pre处于node1当前节点,对列表剩余节点进行判断与两两交换。
  4. 要注意仅当pre的后两个节点都不为空时,需要进行交换;若pre后没有或只有一个节点,则不需要进行交换判断。

代码如下:
在这里插入图片描述