61. 旋转链表

2019-08-18  本文已影响0人  fengup

思路

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* rotateRight(struct ListNode* head, int k){
    if(k == 0 || !head || !(head -> next))  
        return head;

    struct ListNode *cur = head;
    struct ListNode *tmp = head;
    
    int len = 1;
    //成环
    while(tmp->next){
        tmp = tmp->next;
        len++;
    }
    tmp->next = head;
    
    k = k % len;
    k = len - k;
    //断链
    while(k > 0){
        cur = cur->next;
        tmp = tmp->next; 
        k--;
    }
    tmp->next = NULL;

    return cur;

}


上一篇 下一篇

猜你喜欢

热点阅读