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;
}
}

浙公网安备 33010602011771号