/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
//注意取模,和空集
class Solution {
public:
ListNode* rotateRight(ListNode* head, int k) {
int num = cnt(head);
if(num == 0) return head;
k = k%num;
if(k == 0) return head;
int m = num-k;
ListNode* move = head;
for(int i=0;i < m-1;i++){
move = move->next;
}
ListNode* reshead = move->next;
ListNode* node1 = reshead;
while(node1->next != NULL){node1 = node1->next;}
move->next = NULL;
node1->next = head;
return reshead;
}
int cnt(ListNode* head){
int res = 0;
ListNode* temp = head;
while(temp != NULL){
res++;
temp = temp->next;
}
return res;
}
};