Trying to reverse a linked list. I have tried everything - it gives me 'write access violation - temp was nullptr' on the following line:
temp->next = reversed.top();
More context:
struct ListNode {
    int data;
    ListNode* next;
    ListNode() : data(0), next(nullptr) {}
    ListNode(int value) : data(value), next(nullptr) {}
    ListNode(int value, ListNode* pointer) : data(value), next(pointer) {}
    
};
int main()
{
    ListNode* third = new ListNode(12, nullptr);
    ListNode* second = new ListNode(8, third);
    ListNode* head = new ListNode(5, second);
    stack<ListNode*> reversed;
    ListNode* temp = head;
    while (temp) {
        // Push all the nodes in to stack
        reversed.push(temp);
        temp = temp->next;
    }
    head = temp;
    while (!reversed.empty()) {
        // Store the top value of stack in list
        temp->next = reversed.top();
        // Pop the value from stack
        reversed.pop();
        // update the next pointer in the list
        temp = temp->next;
    }
    temp->next = nullptr;
}
 
     
    