public ListNode reverse(ListNode head) {
		if (head == null || head.next == null)
			return head;
		ListNode p = head.next;
		head.next = null;
		while (p != null) {
			ListNode nextP = p.next;
			p.next = head;
			head = p;
			p = nextP;
		}
		return head;
	}