首页 > 代码库 > [LeetCode] Rotate List

[LeetCode] Rotate List

Given a list, rotate the list to the right by k places, where k is non-negative.

For example:
Given 1->2->3->4->5->NULL and k = 2,
return 4->5->1->2->3->NULL.

 1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11 12     ListNode * rotateRight(ListNode *head,unsigned rotate_num){13         if(!head) return NULL;14         15         ListNode *node = head,*tail = head,*ret = NULL;16         unsigned length = 0;17 18 19         while(node){20             ++length;21             node = node->next;22             if(node) tail = node;23         }24 25         rotate_num %= length;26 27         unsigned cur_num = 1;node = head;28             while(cur_num++ != length-rotate_num)29             node = node->next;30 31         tail->next = head;32         ret = node->next;33         node->next = NULL;34     35         return ret;36     }37     38 };

 

[LeetCode] Rotate List