首页 > 代码库 > [leetcode] Swap Nodes in Pairs

[leetcode] Swap Nodes in Pairs

Given a linked list, swap every two adjacent nodes and return its head.

For example,
Given1->2->3->4, you should return the list as2->1->4->3.

Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

https://oj.leetcode.com/problems/swap-nodes-in-pairs/

思路:模拟题,仔细操作即可。

  1. 增加dummyhead方便处理;
  2. 操作节点需保留前一个节点的指针。

 

代码:

public class Solution {    public ListNode swapPairs(ListNode head) {        if (head == null)            return null;        ListNode dummyHead = new ListNode(-1);        dummyHead.next = head;        ListNode pre = dummyHead;        while (pre != null && pre.next != null && pre.next.next != null) {            ListNode q = pre.next;            ListNode r = q.next;            pre.next = r;            q.next = r.next;            r.next = q;            pre = pre.next.next;        }        return dummyHead.next;    }    public static void main(String[] args) {        ListNode list = ListUtils.makeList(1, 2, 3, 4, 5);        ListUtils.printList(list);        ListUtils.printList(new Solution().swapPairs(list));    }}