问题遇到的现象和发生背景
https://leetcode-cn.com/problems/reverse-linked-list-ii/
问题相关代码,请勿粘贴截图
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
void reverse(ListNode* head){
ListNode* reverse = nullptr;
ListNode* p = head;
ListNode* tmp;
while(p!=nullptr){
tmp = p->next;
p->next = reverse;
reverse = p;
p = tmp;
}
}
public:
ListNode* reverseBetween(ListNode* head, int left, int right) {
while(head == nullptr||head->next == nullptr)
return head;
ListNode* dummy = new ListNode(0,head);
ListNode* lefthead = dummy;
ListNode* leftt;
for(int j = 0;j<left-1;j++){
lefthead = lefthead->next;
}
leftt = lefthead->next;
ListNode* righthead = dummy;
ListNode* rightt;
for(int i = 0;i<right;i++)
righthead = righthead->next;
rightt = righthead->next;
lefthead->next = nullptr;
righthead->next = nullptr;
reverse(leftt);
lefthead->next = righthead;
leftt->next = righthead;
return dummy->next;
}
};