25 Reverse Nodes in k-Group

class Solution {
public:
	ListNode* reverseKGroup(ListNode* head, int k) {
		bool flag = false;
		bool chk = false;
		ListNode *p;
		ListNode *temp;
		ListNode *firstNode;
		ListNode *idx= new ListNode(-1);
		while (!flag) {
			p = head;
			for (int i = 0; i < k; ++i) {
				if (!p) {
					if (!chk)return head;
					flag = true;
					break;
				}
				p = p->next;
			}
			if(!flag){
				while (head != p) {
					temp = new ListNode(head->val);
					temp->next = idx->next;
					idx->next = temp;
					head = head->next;
				}
				if (!chk) {
					chk = true;
					firstNode = idx;
				}
				while (idx->next)idx = idx->next;
			}
			else {
				idx->next = head;
			}
		}
		return firstNode->next;
	}
};

猜你喜欢

转载自blog.csdn.net/Leslie5205912/article/details/84316621