leetcode61(旋轉鏈表)--C語言實現

求:spa

給定一個鏈表,旋轉鏈表,將鏈表每一個節點向右移動 個位置,其中 是非負數。code

示例 1:it

輸入: 1->2->3->4->5->NULL, k = 2
輸出: 4->5->1->2->3->NULL
解釋:
向右旋轉 1 步: 5->1->2->3->4->NULL
向右旋轉 2 步: 4->5->1->2->3->NULL

示例 2:io

輸入: 0->1->2->NULL, k = 4
輸出: 
解釋:
向右旋轉 1 步: 2->0->1->NULL
向右旋轉 2 步: 1->2->0->NULL
向右旋轉 3 步: 
向右旋轉 4 步: 2->0->1->NULL0->1->2->NULL2->0->1->NULL

解:List

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
 
struct  ListNode* rotateRight( struct  ListNode* head,  int  k){
     int  size= 0 ;
     int  i;
     struct  ListNode* p1;
     struct  ListNode* p2;
     for (p1=head;p1!=NULL;p1=p1->next)
        size++;
     if (size== 0 return  head;
     int  times = k % size;
     struct  ListNode* pre = ( struct  ListNode*)malloc( sizeof  (  struct  ListNode));
     for (i= 0 ,p2=head;i<times;i++)
        p2=p2->next;
     for (p1=head;p2->next!=NULL;p2=p2->next)
        p1=p1->next;
     p2->next = head;
     pre->next = p1->next;
     p1->next = NULL;
     return  pre->next;
}
相關文章
相關標籤/搜索