24. Swap Nodes in Pairs
Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2->3->4, you should return the list as 2->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.
关于链表的题, 画图看看需要那几个节点, 一般都是接头节点(用作标记) 和遍历节点, 遍历的时候要判空, head.next != null 前一定要判head != null,
将尾节点置为空!
/** * 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 dummy = new ListNode(0); ListNode pre = dummy; while (head != null && head.next != null) { ListNode temp = head.next.next; pre.next = head.next; pre = pre.next; pre.next = head; pre = pre.next; head = temp; } if (head != null) { pre.next = head; pre.next.next = null; } else { pre.next = null; } return dummy.next; } }