设为首页 加入收藏

TOP

61. Rotate List
2017-10-12 17:41:04 】 浏览:2836
Tags:61. 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.

k=2 就是向右移动2次

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     struct ListNode *next;
 6  * };
 7  */
 8 struct ListNode* rotateRight(struct ListNode* head, int k) {
 9     struct ListNode *cur;
10     cur = head;
11     int n = 1;
12     if(head == NULL)
13         return NULL;
14     while(cur->next != NULL)                 //求链表长度,把cur定位到尾结点
15     {
16         cur = cur->next;
17         n++;
18     }
19     k = n - k % n;                  //注意K有可能大于链表长度 要取余数
20     cur->next = head;
21     cur = head;
22     k--;
23     while(k)                                   //cur移动到断开前的位置
24     {
25         cur = cur->next;
26         k--;
27     }
28     head = cur->next;
29     cur->next = NULL;
30     return head;
31 }

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇53. Maximum Subarray 下一篇应用程序调试总结

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

最新文章

热门文章

C 语言

C++基础

windows编程基础

linux编程基础

C/C++面试题目