
1.遇到链表题我们首先画图

如图所示我们旋转k个点,其实就是把后面k个点移到了前面,
2.画出被改变节点所连接的前后的边。以及找出我们需要用的点。
从这里看出我们需要第n-k个点和n-k+1的点,和最后一个点,
如图所示
ok之后我们就开始做题了
步骤:
1.先判断head,k是否为空;
2.求链表的长度,以及尾节点
3.求出第n-k个节点
4.改变他们的指向位置
class Solution {
public:
    ListNode* rotateRight(ListNode* head, int k) {
      if(!head)return head;
      int n=0;
      ListNode*tail;
      for(auto p=head;p;p=p->next){
          tail=p;
          n++;
      }
      k%=n;
      if(!k)return head;
      auto p=head;
      for(int i=0;i<n-k-1;i++)p=p->next;
      tail->next=head;
      head=p->next;
      p->next=nullptr;
      return head;
 }
};









