Мне любопытно, в чем разница в двух приведенных ниже функциях:
void Add(T x)
{
if (head == nullptr)
{
head = (new Node<T>());
head->set(x);
head->set_next(nullptr);
return;
}
Node<T> *temp = head;
while (temp->get_next() != nullptr)
{
temp = temp->get_next();
}
temp->set_next(new Node<T>());
(temp->get_next())->set(x);
(temp->get_next())->set_next(nullptr);
}
void Add(T x)
{
Node<T> *temp = head;
while (temp != nullptr)
{
temp = temp->get_next();
}
temp = new Node<T>();
temp->set(x);
temp->set_next(nullptr);
}
Первая работает правильно, вторая выдает ошибку сегментации. Это почему? Я думал, что результат должен быть таким же, просто хотел сделать код немного короче, но мне явно чего-то не хватает