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

这里的思路就很巧妙了 ,同样是遍历链表逐个交换,这里是以三个节点为一组进行交换操作
就比如我们想交换1 , 2节点。那么我们就需要cur作为1节点的前一个节点,然后完成如下操作

其实都是一些节点连接操作 但是有以下的细节需要处理
- cur在连接节点2后,节点1的位置就失踪了,因此要把节点1提前存储在中间变量
- 在节点2连接节点1之后,节点3的位置也失踪了,同理要提前存储好
- cur在完成节点1和节点2的两两交换之后,cur的位置需要前进到节点1,随后处理同样的操作处理节点3和节点4
为什么cur要到节点1?
因为你完成一轮操作后的节点位置其实是cur ->节点2->节点1->节点3->节点4
所以为了处理节点3和节点4 cur是要跳到节点1的位置
完整代码
1 | # Definition for singly-linked list. |