您的位置:首页 > 其它

[leetcode]Reverse Linked List II

2013-09-11 22:37 429 查看
有一道链表的题目。今天面试别人出了链表的题目都被答出来了,可见这个一般训练过还是能做出来的,就是考虑corner case即可。这里主要是m为1的时候,head就要变了。

class Solution {
public:
ListNode *reverseBetween(ListNode *head, int m, int n) {
ListNode* current = head;
ListNode* last = NULL;
int i = 1;
while (i != m && current != NULL)
{
last = current;
current = current->next;
i++;
}
ListNode* start1 = last;
ListNode* start2 = current;
last = current;
current = current->next;
i++;
while (i != n+1 && current != NULL)
{
ListNode* tmp = current->next;
current->next = last;
last = current;
current = tmp;
i++;
}
if (start1 != NULL)
{
start1->next = last;
}
else
{
head = last;
}
if (start2 != NULL)
{
start2->next = current;
}
return head;
}
};


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: