170. 旋转链表

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;
        
        
    }

猜你喜欢

转载自blog.csdn.net/yinhua405/article/details/112798600