Вызвано необработанное ислючение: нарушение доступа для чтения. 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;
}