Я пытаюсь перевернуть узлы в связанном списке между двумя заданными индексами. Я использую для этого стек, в котором содержатся все соответствующие узлы, но я не могу получить доступ к узлам, получая ошибку времени выполнения с этой конкретной строкой
p.first-> next = s.top ();
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
using namespace std;
#include <stack>
#include <pair>
class Solution {
public:
ListNode* reverseBetween(ListNode* head, int m, int n) {
ListNode* nd = head;
int count = 0;
stack<ListNode*> s;
pair<ListNode*, ListNode*> p;
while(nd->next != NULL){
count ++;
if(count = m-1){
p.first = nd;
}
if(count >= m and count <= n){
s.push(nd);
}
if(count = n+1){
p.second = nd;
}
nd=nd->next;
}
(p.first)->next = s.top()
ListNode* temp =s.top();
s.pop();
/*
while(!s.empty()){
temp->next = s.top();
s.pop();
temp = temp->next;
}
temp->next = p.second;
*/
return head;
}
};