24. 两两交换链表中的节点
24. 两两交换链表中的节点 - 力扣(LeetCode)
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode swapPairs(ListNode head) {if (head == null || head.next == null){return head;}//节点数只有一个或没有就不交换,直接返回头节点ListNode dumm = new ListNode();//创建哑节点dumm.next = head;ListNode temp = dumm;while (temp.next != null && temp.next.next != null){//剩余的节点数只有一个或没有就结束循环ListNode node1 = temp.next;ListNode node2 = temp.next.next;//使用两个节点保存当前节点的下个节点和下下个节点temp.next = node2;node1.next = node2.next;node2.next = node1;//交换节点temp = node1;//更新节点}return dumm.next;}
}