题目:
解答:
看注释。
代码:
class Solution {
public:
ListNode *rotateRight(ListNode *head, int k) {
if (head == NULL)
return head;
int len = 1;
ListNode *last = head;
//记录字符串长度并且查找尾节点
while (last->next)
{
last = last->next;
++len;
}
k = k % len;
ListNode *temp = head;
//寻找右移后的最后一个节点
for (int i = 1; i < len - k; i++)
{
temp = temp->next;
}
//把头节点指向尾节点的next
last->next = head;
//新的头结点为最后一个节点的下一个
ListNode *newhead = temp->next;
//最后一个节点指向空
temp->next = NULL;
return newhead;
}
};