public static ListNode reverseKGroup(ListNode head, int k) {
		if (head == null || head.next == null)
			return head;
		ListNode pre = new ListNode(0);
		pre.next = head;
		head = pre;
		int index = 1;
		ListNode cur = pre.next;
		ListNode post = cur.next;
		while (enoughElement(cur, k)) {
			while (index < k) {
				ListNode temp = post.next;
				post.next = pre.next;
				cur.next = temp;
				pre.next = post;
				post = temp;
				index++;
			}
			index = 1;
			pre = cur;
			cur = cur.next;
			if (cur != null) {

				post = cur.next;
			}
		}
		return head.next;

	}