In this lesson, we investigate how to rotate the nodes of a singly linked list around a specified pivot element. This implies shifting or rotating everything that follows the pivot node to the front of the linked list.
The illustration below will help you understand how to rotate the nodes of a singly linked list.
Singly Linked List: Rotate
Let's rotate the linked list around pivot = 3.
1 of 2
Algorithm
The algorithm to solve this problem has been illustrated below:
Singly Linked List: Rotate
1 of 6
As you can see from the illustrations above, we make use of two pointers p and q. p points to the pivot node while q points to the end of the linked list. Once the pointers are rightly positioned, we update the last element, and instead of making it point to None, we make it point to the head of the linked list. After this step, we achieve a circular linked list. Now we have to fix the end of the linked list. Therefore, we update the head of the linked list, which will be the next element after the pivot node, as the pivot node has to be the last node. Finally, we set p.next to None which breaks up the circular linked list and makes p (pivot node) the last element of our rotated linked list.
Implementation
Now that you are familiar with the algorithm, let’s start with the implementation of the algorithm.