**Problem Description**

Given a linked list **A** of length **N** and an integer **B**.

You need to reverse every alternate **B** nodes in the linked list **A**.

- 1 <= N <= 10
^{5} - 1<= Value in Each Link List Node <= 10
^{3} - 1 <= B <= N
- N is divisible by B

First argument is the head pointer of the linkedlist **A**.

Second argument is an integer **B**.

Return the head pointer of the final linkedlist as described.

Input 1:

A = 3 -> 4 -> 7 -> 5 -> 6 -> 6 -> 15 -> 61 -> 16 B = 3

Input 2:

A = 1 -> 4 -> 6 -> 6 -> 4 -> 10 B = 2

Output 1:

7 -> 4 -> 3 -> 5 -> 6 -> 6 -> 16 -> 61 -> 15

Output 2:

4 -> 1 -> 6 -> 6 -> 10 -> 4

Explanation 1:

The linked list contains 9 nodes and we need to reverse alternate 3 nodes. First sublist of length 3 is 3 -> 4 -> 7 so on reversing it we get 7 -> 4 -> 3. Second sublist of length 3 is 5 -> 6 -> 6 we don't need to reverse it. Third sublist of length 3 is 15 -> 61 -> 16 so on reversing it we get 16 -> 61 -> 15.

Explanation 2:

The linked list contains 6 nodes and we need to reverse alternate 2 nodes. First sublist of length 2 is 1 -> 4 so on reversing it we get 4 -> 1. Second sublist of length 2 is 6 -> 6 we don't need to reverse it. Third sublist of length 2 is 4 -> 10 so on reversing it we get 10 -> 4.

NOTE:You only need to implement the given function. Do not read input, instead use the arguments to the function. Do not print the output, instead return values as specified. Still have a doubt? Checkout Sample Codes for more details.

Loading...