func rotateRight(head *ListNode, k int) *ListNode {
if head == nil {
return head
}
n := 0
for tmp := head; tmp != nil; tmp = tmp.Next {
n ++
}
k %= n
if k == 0 {
return head
}
dummy := &ListNode{Next:head}
ne, cur := dummy, dummy
for i := 0; i < k; i ++ {
ne = ne.Next
}
for ne.Next != nil {
ne = ne.Next
cur = cur.Next
}
dummy.Next = cur.Next
ne.Next = head
cur.Next = nil
return dummy.Next
}