Я пытаюсь реализовать класс связанного списка. У меня есть структура с именем node, в которой есть данные и node*, а также класс связанного списка, который имеет указатель на головной узел связанного списка в качестве члена класса. Я написал метод вставки для класса связанного списка, который вставляет данные в n-ю позицию:
void insert(int x, int n) {
node* iterator = headNode;
node* temp;
temp->data = x;
for (int i = 0; i < n-1; i++)
{
iterator = iterator->next;
}
temp->next = iterator->next;
iterator->next = temp;
}
Однако, когда я это делаю, член класса головного узла перезаписывается временным. С помощью cout я узнал, что строка
temp->data = x;
Это строка, которая перезаписывает его. Может кто-нибудь объяснить, почему? Кстати, мне удалось решить проблему перезаписи, объявив temp в куче с помощью new, но опять же, может кто-нибудь объяснить, почему?
temp->data = x;вызывает неопределенное поведение, так какtempне указывает на допустимый объектnode(он указывает на случайный адрес, поскольку вы не инициализировали указатель) - person UnholySheep   schedule 14.06.2020