1. 题目描述
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)
2. 题解
public class Solution30 {
public ListNode swapPairs(ListNode head) {
// 创建一个虚拟头节点,方便操作
ListNode dummy = new ListNode(0);
dummy.next = head;
// 初始化指针
ListNode prev = dummy;
while (prev.next != null && prev.next.next != null) {
// 定义要交换的两个节点
ListNode first = prev.next;
ListNode second = prev.next.next;
// 交换节点
first.next = second.next;
second.next = first;
prev.next = second;
// 移动prev指针
prev = first;
}
// 返回新的头节点
return dummy.next;
}
}