给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。
非常常规的题目吧!
ListNode* rotateRight(ListNode* head, int k) {
if(nullptr == head)
return nullptr;
int length = 1;
ListNode *p1 = head;
while(nullptr != p1->next) {
p1 = p1->next;
length++;
}
int n = k % length;
if(0 == n) return head;
p1->next = head;
p1 = head;
for(int i = 1; i < length - n; i++)
p1 = p1->next;
ListNode *p2 = p1->next;
p1->next = nullptr;
return p2;
}