代码
class Solution {
public:
ListNode *reverseBetween(ListNode *head, int m, int n) {
if(head==NULL|m==n)
return head;
ListNode *newHead, *pre, *p, *tail;
newHead = new ListNode(0);
newHead->next = head;
pre = newHead;
p = head;
int i = 1;
while(p!=NULL&&i<m)
{
++i;
pre = p;
p = p->next;
}
while(p!=NULL&&i<n)
{
++i;
p = p->next;
}
tail = p->next;
ListNode *last = pre->next;
ListNode *cur = pre->next->next;
while(cur!=tail)
{
ListNode *tmp = cur->next;
cur->next = pre->next;
pre->next = cur;
cur = tmp;
}
last->next = tail;
return newHead->next;
}
};
本文介绍了一个C++实现的反转链表中指定区间[m, n]内的元素的方法。通过定义一系列指针并使用双循环来完成反转操作,最终返回修改后的链表头节点。
548

被折叠的 条评论
为什么被折叠?



