力扣24. 两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode swapPairs(ListNode head) { if(head == null || head.next == null) return head; ListNode pHead = new ListNode(-1); pHead.next = head; ListNode pre = pHead; ListNode a = pHead.next; ListNode b = pHead.next.next; while(pre.next != null && pre.next.next != null){ a = pre.next; b = pre.next.next; //交换指针 pre.next = b; a.next = b.next; b.next = a; pre = a; } return pHead.next; } }