Given a linked list of size N. The task is to reverse every k nodes (where k is an input to the function) in the linked list.

Example 1:

Input:

K = 4

Output: 4 2 2 1 8 7 6 5

Explanation:

The first 4 elements 1,2,2,4 are reversed first

and then the next 4 elements 5,6,7,8. Hence, the

Example 2:

Input:

K = 3

Output: 3 2 1 5 4

Explanation:

The first 3 elements are 1,2,3 are reversed

first and then elements 4,5 are reversed.Hence,

the resultant linked list is 3->2->1->5->4.

c++ implementation:

`struct node *reverse (struct node* head, int k){	struct node* current = head;	struct node* next = NULL;	struct node* prev = NULL;	int count = 0; 		while (current != NULL && count < k)	// reversing k elements :	{		next = current->next;             // marking next node		current->next = prev;             // reversing link		prev = current;                   // updating prev		current = next;                   // updating current		count++;	}		if (next != NULL)       // checking if there are nodes ahead    	head->next = reverse(next, k);    // reversing those recursively    	return prev;            // returning new head}`
Time Complexity: O(n)
darkmode