Вызвано необработанное ислючение: нарушение доступа для чтения. temp было nullptr

Не знаю, как решить эту проблему

#include <iostream>
#include <string>
using namespace std;

// Описание структуры FATT (ФИО, должность, год)
struct FATT {
    string surname; // Фамилия
    string name; // Имя
    string position; // Должность
    int year; // Год
    FATT* next; // Указатель на следующий элемент списка
};

// Функция вывода списка
void printList(FATT* head) {
    FATT* current = head;
    while (current != NULL) {
        cout << "Surname: " << current->surname << endl;
        cout << "Name: " << current->name << endl;
        cout << "Position: " << current->position << endl;
        cout << "Year: " << current->year << endl;
        cout << endl;
        current = current->next;
    }
}

// Функция удаления элемента списка по фамилии
void deleteNode(FATT*& head, string surname) {
    FATT* temp = head;
    FATT* prev = NULL;

    while (temp != NULL && temp->surname != surname) {
        prev = temp;
        temp = temp->next;
    }

    if (temp == NULL) {
        cout << surname << " not found in the list." << endl;
        return;
    }

    if (prev == NULL) {
        head = head->next;
    } else {
        prev->next = temp->next;
    }

    delete temp;

    cout << surname << " has been deleted from the list." << endl;
}

// Функция вставки нового элемента в список
void insertNode(FATT*& head, int pos) {
    FATT* newNode = new FATT;

    cout << "Enter surname: ";
    cin >> newNode->surname;

    cout << "Enter name: ";
    cin >> newNode->name;

    cout << "Enter position: ";
    cin >> newNode->position;

    cout << "Enter year: ";
    cin >> newNode->year;

    if (pos == 1) {
        newNode->next = head;
        head = newNode;
        return;
    }

    FATT* temp = head;
    for (int i = 1; i < pos - 1; i++) {
        if (temp == NULL) {
            cout << "Invalid position." << endl;
            return;
        }
        temp = temp->next;
    }

    newNode->next = temp->next;
    temp->next = newNode;

    cout << "New node has been inserted at position " << pos << "." << endl;
}

// Главная функция программы
int main() {
    FATT* head = NULL;

    // Создание начального списка
    FATT* node1 = new FATT;
    node1->surname = "Smith";
    node1->name = "John";
    node1->position = "Manager";
    node1->year = 2010;

    FATT* node2 = new FATT;
    node2->surname = "Johnson";
    node2->name = "Emily";
    node2->position = "Engineer";
    node2->year = 2015;

    FATT* node3 = new FATT;
    node3->surname = "Brown";
    node3->name = "David";
    node3->position = "Analyst";
    node3->year = 2012;

    head = node1;
    node1->next = node2;
    node2->next = node3;
    node3->next = NULL;

    printList(head);

    deleteNode(head, "Johnson");

    printList(head);

    insertNode(head, 2);

    printList(head);

    return 0;
}

Ответы (0 шт):