170. 旋转链表
给定一个链表,旋转链表,使得每个节点向右移动k个位置,其中k是一个非负数
样例
样例 1:
输入:1->2->3->4->5 k = 2
输出:4->5->1->2->3
样例 2:
输入:3->2->1 k = 1
输出:1->3->2
ListNode * rotateRight(ListNode * head, int k) {
// write your code here
if(head==NULL)
{
return head;
}
ListNode * tail=head;
int size = 1;
while(tail->next)
{
tail=tail->next;
size++;
}
std::cout<<size<<std::endl;
int move = size - (k % size);
std::cout<<move<<std::endl;
if(head != tail)
{
while(move>0)
{
tail->next = head;
head = head->next;
tail=tail->next;
tail->next = nullptr;
move--;
}
}
return head;
}