链表反转的问题有多经典就不说了
做该题之前必须要完成:206. 反转链表,如果这题都完不成,就不要继续往下看了。
题目
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例 1:
输入: head = [1,2,3,4]
输出:[2,1,4,3]
两个结点一反转
题的大致的意思是两个结点一反转,不足两个结点的不反转。
下面的图描述了每次对结点指针操作的顺序,其实p是虚拟头节点
默认你会反转链表,所以应该知道,这是件麻烦的事情,我们需要记录好几个结点。
思路:
1.我们先用一个虚拟头节点,方便反转。