https://leetcode.com/problems/rotate-list/
//使用tail进行操作,tail就是head的前一个
//61 Rotate List
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode* rotateRight(ListNode* head, int k) {
if(!head) return NULL;
int cnt=1;
ListNode* tail=head;
while (tail->next) {
tail=tail->next;
cnt+=1;
}
tail->next=head; //环
if(k%=cnt){
for(int i=0;i<cnt-k;i++){
tail=tail->next; //移动tail最后的尾部
}
}
head=tail->next;//表示k%cnt==0
tail->next=NULL;
return head;
}
};