public class Solution { public ListNode rotateRight(ListNode head, int k) { if(head==null){ return head; } int length = getListLength(head); k =k%length; ListNode tail = getTail(head); ListNode index =getIndex(head,k,length); tail.next = head; head = index.next; index.next=null; return head; } public int getListLength(ListNode head){ ListNode p = head; int length=0; while(p!=null){ p=p.next; length++; } return length; } public ListNode getIndex(ListNode head,int k,int length){ ListNode p = head; int s = length -k; for(int i=1;i<s;i++){ p=p.next; } return p; } public ListNode getTail(ListNode head){ ListNode p = head; while(p.next!=null){ p = p.next; } return p; } }