给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
使用迭代法,建立哨兵头节点(方便返回)
public ListNode swapPairs(ListNode head) {
ListNode dummy=new ListNode(-1,head);
ListNode pre=dummy;
while (pre.next!=null&&pre.next.next!=null){
ListNode temp=head.next.next;
pre.next=head.next;
head.next.next=head;
head.next=temp;
pre=head;
head=head.next;
}
return dummy.next;
}
此图来自代码随想录
这个顺序首先保证不会出现指针混乱,并且要提前保存待交换部分的链表。