利用四个指针:
两个指针cur、prev用来遍历需要反住哪的部分链表。
一个指针begin指向反转部分的前一个节点。
一个指针指向反转部分的第一个节点。
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类
* @param m int整型
* @param n int整型
* @return ListNode类
*/
ListNode* reverseBetween(ListNode* head, int m, int n) {
// write code here
ListNode*cur = head;
ListNode* Next = nullptr;
ListNode* end = nullptr;
ListNode* begin = nullptr;
ListNode* prev = nullptr;
int i = 0;
for(i = 1; i< m;i++)
{
begin = cur;
cur = cur->next;
}
prev = cur;
end = cur;
for(i = m;i<=n;i++)
{
Next = cur->next;
cur->next =prev;
prev = cur;
cur = Next;
}
if(m ==1)
{
head = prev;
}
else
{
begin->next = prev;
}
end->next = cur;
return head;
}
};
京公网安备 11010502036488号