给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 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;
}
}
京公网安备 11010502036488号