public ListNode swapPairs2(ListNode head) {
		if (head == null || head.next == null)
			return head;
		ListNode pre = null;
		ListNode ppre = null;
		ListNode p = head;
		boolean change = true;
		while (p.next != null) {
			ppre = pre;
			pre = p;
			p = p.next;
			if (change) {
				if (pre == head) {
					head = p;
				} else {
					ppre.next = p;
				}
				pre.next = p.next;
				p.next = pre;
				p = pre;
				change = false;
			} else {
				change = true;
			}
		}
		return head;
	}