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

思路:使用虚拟头结点,这样会方便很多,要不然每次针对头结点(没有前一个指针指向头结点),还要单独处理。
接下来就是交换相邻两个元素了,此时一定要画图,不画图,操作多个指针很容易乱,而且要操作的先后顺序
初始时,cur指向虚拟头结点,然后进行如下三步:

/**
class ListNode{
int val;
ListNode next;
public ListNode(int val){
this.val = val;
}
public ListNode(int val,ListNode9 next){
this.val = val;
this.next = next;
}
}*/
class Solution{
public ListNode swapPairs(ListNode head){
if(head == null || head.next == null) return head;
//获取当前节点的下一个节点
ListNode next = head.next;
//进行递归
ListNode newNode = swapPairs(next.next);
//进行交换
next.next = head;
head.next = newNode;
return next;
}
}

浙公网安备 33010602011771号