GFG App
Open App
Browser
Continue

# Clockwise rotation of Linked List

Given a singly linked list and an integer K, the task is to rotate the linked list clockwise to the right by K places.
Examples:

Input: 1 -> 2 -> 3 -> 4 -> 5 -> NULL, K = 2
Output: 4 -> 5 -> 1 -> 2 -> 3 -> NULL
Input: 7 -> 9 -> 11 -> 13 -> 3 -> 5 -> NULL, K = 12
Output: 7 -> 9 -> 11 -> 13 -> 3 -> 5 -> NULL

Approach: To rotate the linked list first check whether the given k is greater than the count of nodes in the linked list or not. Traverse the list and find the length of the linked list then compare it with k, if less then continue otherwise deduce it in the range of linked list size by taking modulo with the length of the list.
After that subtract the value of k from the length of the list. Now, the question has been changed to the left rotation of the linked list so follow that procedure:

• Change the next of the kth node to NULL.
• Change the next of the last node to the previous head node.
• Change the head to (k+1)th node.

In order to do that, the pointers to the kth node, (k+1)th node, and last node are required.
Below is the implementation of the above approach:

## Javascript



Output:

4 -> 5 -> 1 -> 2 -> 3 -> NULL

Time Complexity: O(n) where n is the number of nodes in Linked List.

Auxiliary Space: O(1)

STL based approach :

This problem can also be solved using the deque data structure provided in the C++ STL

Approach :

Initialise a deque with the type Node* and push the linked list into it.Then keep popping from it’s back and adding that node to it’s front until the number of operations are not equal to k.

## Java

Output

4 -> 5 -> 1 -> 2 -> 3 -> NULL

Time Complexity: O(N)
Auxiliary Space: O(N)

My Personal Notes arrow_drop_up