/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func rotateRight(head *ListNode, k int) *ListNode {
if head == nil || head.Next == nil {
return head
}
var l int
t_head := head
for ;t_head.Next!=nil; {
t_head = t_head.Next
l++
}
l++
k = k % l
for range k {
tn := head.Next
sln := head
for ;tn.Next!=nil; {
sln = sln.Next
tn = tn.Next
}
sln.Next.Next = head
head = sln.Next
sln.Next = nil
}
return head
}