public void reorderList2(ListNode head) {
		// IMPORTANT: Please reset any member data you declared, as
		// the same Solution instance will be reused for each test case.
		int l = 0;
		ListNode p = head;
		while (p != null) {
			p = p.next;
			++l;
		}
		p = head;
		if (l <= 2){
			return ;
		}
		ListNode preP = p;
		for (int i = 0; i < ((l + 1) / 2); ++i) {
			preP = p;
			p = p.next;
		}
		preP.next = null;
		ListNode headRear = reverse(p);
		ListNode headFront = head;
		for (int i = 0; i < l / 2; ++i) {
			ListNode pFront = headFront.next;
			ListNode pRear = headRear;
			headRear = headRear.next;
			pRear.next = pFront;
			headFront.next = pRear;
			headFront = pFront;
		}
	}