题目描述
Given a linked list, swap every two adjacent nodes and return its head.
You may not modify the values in the list’s nodes, only nodes itself may be changed.
示例
输入: 1->2->3->4
输出: 2->1->4->3
注意事项
链表的更改操作,不能直接修改节点的值。头指针也是需要交换的,所以我们可以设置一个辅助头结点指向链表的头结点,这样就可以对整个链表进行处理。我们就以1->2->3->4->5这个输入来举例说明算法的过程。
算法过程
参考代码
public ListNode swapPairs(ListNode head) {
if(head == null || head.next == null)
return head;
ListNode out = new ListNode(0);
out.next = head;
ListNode pre = out;
ListNode first = null;
while(pre.next!=null && pre.next.next != null) {
first = pre.next;
pre.next = first.next;
first.next = first.next.next;
pre.next.next = first;
pre = first;
}
return out.next;
}