/**
* 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) {
if(head==nullptr)
return head;
int len=1;
ListNode *newHead,*tail;
newHead=tail=head;
while(tail->next)
{
tail=tail->next;
len++;
}
tail->next=head; //循环链表
if(k %= len) //k的合法性 ?
{
for(int i=0;i<len-k;++i) //尾节点是(len-k)节点(第一个节点是头)
tail=tail->next; //得到尾节点
}
newHead=tail->next; //循环中尾节点的下一个
tail->next=nullptr; //断开链表
return newHead;
}
};