Как упоминал JaMiT, трудно отладить без возможности воспроизведения. Обратите внимание на несколько предложений
Вы никогда не используете copy
.
Поведение в следующей части
while (current != nullptr) {
trail = current;
if (current->data == remove) { // error occurs on this line
Node<dataType>* temp2 = current;
current = trail->next;
delete temp2;
return true;
}
current = current->next;
}
действительно выглядит как то, что вы хотели бы сделать. Когда вы входите в цикл в первый раз, trail
и current
- это одно и то же (потому что вы присваиваете current
для trail
). Если current
узел не был узлом, который нужно удалить, вы делаете current = current->next;
. Предполагая, что это не nullptr
, вы возвращаетесь к началу цикла и снова устанавливаете trail
на current
. Возможно, вы захотите установить trail
на старое current
(чтобы trail
следовало за current
, как следует из названия).
while (current != nullptr) {
if (current->data == remove) {
Node<dataType>* temp2 = current;//save pointer to the node to delete later
trail->next = current->next;//skip this node - deleting it from the chain
delete temp2;//delete it
return true;
}
trail = current; //let trail follow current
current = current->next;
}
Почему
remove
для
UnOrderedList<dataType>
принимает
int
вместо
dataType
?