I am not getting it How to proceed for this problem ??
Linked List K-Reverse
hello @ashwani225
The need of the question is to reverse every k nodes (where k is an input to the function) and k is a factor of size of List.
Example:
Inputs: 1->2->3->4->5->6->7->8->NULL and k = 3
Output: 3->2->1->6->5->4->8->7->NULL.
Algorithm :
- Reverse the first sub-list of size k.1.1 While reversing keep track of the next node and previous node.1.2 Let the pointer to the next node be next and pointer to the previous node be prev.
- head->next = reverse(next, k) /* Recursively call for rest of the list and link the two sub-lists */
- return prev /* prev becomes the new head of the list (see the diagrams of iterative method of this post) */
code ->
LinkedList is 1 2 3 4 5 6 7 8 9
output is 3 2 1 6 5 4 9 8 7
node* reverse(node*& head,int k){
// nodecurrent = head;
// nodenext = NULL;
// node*prev = NULL;
// int count = 0;
// /* Reverse first k nodes of linked list */
// while (count < k && current != NULL)
// {
// next = current->next;
// current->next = prev;
// prev = current;
// current = next;
// count++;
// }
// /* next is now a pointer to (k+1)th node
// Recursively call for the list starting from current.
// And make rest of the list as next of first node */
// if (next != NULL)
// head->next = reverse(next, k);
// // prev is now head of input list
// return prev;
// }
can you please explain me after if condition how code works ??
when head is 1 so head->next will point to after reverse is to 9 then again ?
Basically I want to know that when reverse is done then how it is joined to each other ??
this line responsible for joining them.
u can watch the video again , prateek bhaiya has covered it
I hope I’ve cleared your doubt. I ask you to please rate your experience here
Your feedback is very important. It helps us improve our platform and hence provide you
the learning experience you deserve.
On the off chance, you still have some questions or not find the answers satisfactory, you may reopen
the doubt.