新建一个链表来保存交换后的链表;
定义三个指针,分别指向第一、二个结点first 和second,新建链表的头结点prev;
让prev.next 等于second结点,first.next 等于second.next,然后 second.next再等于first,第一、二结点完成交换,
再让prev指向first;first 和 second 指向第三四结点,重复上述过程,依此类推,完成整个链表的交换。
public ListNode swapPairs(ListNode head) {
if(head==null||head.next==null) {
return head;
}
ListNode node = new ListNode(-1);
node.next = head;
ListNode prev = node;
while(head!=null&&head.next!=null) {
ListNode first = head;
ListNode second = head.next;
prev.next = second;
first.next = second.next;
second.next = first;
prev = first;
head = first.next;
}
return node.next;
}