旋转链表

题目形容
给你一个链表的头节点 head ,旋转链表,将链表每个节点向右挪动 k 个地位。

题目作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetb...
题目起源:力扣(LeetCode)
题解作者:WildDuck
剖析思路

代码实现

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     struct ListNode *next; * }; *///本题解中的fast指针不会比slow每次走快N步,只是比slow指针先登程,二者步调速度统一,用于造成一个区间typedef struct ListNode* ListNode_pointer;struct ListNode* rotateRight(struct ListNode* head, int k){    if(head != NULL)    {        ListNode_pointer fast = head;        ListNode_pointer slow = head;        ListNode_pointer save_pointer = NULL;        int list_length=1;        while(fast->next != NULL)        {            fast = fast -> next;            list_length = list_length+1;        }        k = k%list_length;        fast = head;        for(int i = 0; i<k;i++)        {            fast = fast->next;        }                while(fast->next != NULL)        {            fast = fast->next;            slow = slow->next;        }        if(slow != fast)        {            save_pointer = slow;            slow = slow ->next;            fast->next = head;            save_pointer->next = NULL;        }        else if (slow == fast)        {            slow = head;        }        return slow;    }    else return head;        }