# Rotate linked list clockwise by k nodes in typescript

Ts program for Rotate linked list clockwise by k nodes. Here mentioned other language solution.

``````/*
TypeScript program for
Rotate a list by moving each element
k times to the right.
Or clockwise rotation of linked list
*/
{
public data: number;
constructor(data: number)
{
this.data = data;
this.next = null;
}
}
class SingleLL
{
constructor()
{
this.tail = null;
}
{
{
}
else
{
// Append the node at last position
this.tail.next = node;
}
this.tail = node;
}
public display()
{
{
return;
}
while (temp != null)
{
console.log(" " + temp.data + " →");
// Visit to next node
temp = temp.next;
}
console.log(" NULL");
}
// This are perform the linked list rotation
public rotation(k: number)
{
// Define some auxiliary variable
var count = 0;
// Count number of node in linked list
while (auxiliary != null)
{
// visit to next node
auxiliary = auxiliary.next;
count++;
}
if (count <= 1)
{
// When have less than 2 nodes in linked list
return;
}
// Get actual rotation
count = k % count;
if (count == 0)
{
// When actual linked list are not affected
return;
}
// Find the rotational node
while (count > 1)
{
// Visit to next node
auxiliary = auxiliary.next;
count--;
}
// Connecting the last node to first node of linked list
// Set new last node
this.tail = auxiliary;
// Set that there is no node after of tail
this.tail.next = null;
}
// Handles the request to perform rotation
// k is indicate node rotation
public clockwiseRotation(k: number)
{
if (k <= 0)
{
// When invalid given k
return;
}
{
return;
}
console.log(" Before rotate ");
this.display();
console.log(" Given k : " + k);
// Perform rotation
this.rotation(k);
console.log(" After rotate ");
this.display();
console.log("\n");
}
public static main()
{
var sll1 = new SingleLL();
var sll2 = new SingleLL();
// 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → NULL
// 4 → 9 → 7 → 3 → 8 → 6 → -2 → NULL
// Test case
sll1.clockwiseRotation(3);
sll2.clockwiseRotation(18);
}
}
SingleLL.main();
/*
file : code.ts
tsc --target es6 code.ts
node code.js
*/``````

Output

`````` Before rotate
1 →
2 →
3 →
4 →
5 →
6 →
7 →
8 →
NULL
Given k : 3
After rotate
4 →
5 →
6 →
7 →
8 →
1 →
2 →
3 →
NULL

Before rotate
4 →
9 →
7 →
3 →
8 →
6 →
-2 →
NULL
Given k : 18
After rotate
8 →
6 →
-2 →
4 →
9 →
7 →
3 →
NULL

``````

## Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.