您的位置:首页 > 其它

LeetCode 61. Rotate List

2016-04-24 17:33 246 查看
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
.

AC代码如下:

ListNode* rotateRight(ListNode* head, int k)
{

if(head == NULL)
return head;
int length = 0;
ListNode *p = head;
while(p != NULL)
{
length++;
p=p->next;
}
k = k%length;
if( length == 1 || k == 0)
return head;

ListNode *q = head;
for(int i = 1;i < length - k;i++)
q = q->next;
ListNode *r = q->next;
ListNode *newHead = q->next;
while(r->next != NULL)
r = r->next;
r->next = head;
q ->next = NULL;
return newHead;
}几个要注意的小问题,
1.函数中传入的节点head就是第一个节点,而不是我们常说的含头结点的单链表的头结点。

2.K值的问题,K如果大于单链表的长度,则取其对单链表长度取余后的结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: