Я реализую LinkedList.Вместо того, чтобы переделывать работу, могу ли я повторно использовать открытую функцию, которую я написал, чтобы удалить и освободить узлы (тоже память) в деструкторе.Вывод получается хорошим / правильным, но мне интересно, что я пропустил за сценой.Я видел это , но моя главная проблема в том, правильно ли я делаю это с точки зрения освобождения памяти в моем коде C ++.
Мой деструктор:
~LinkedList(){
Node *next = head;
while(head != NULL){
DeleteEndVal();
}
}
Моя публичная функция DeleteEndVal ();:
// delete value from the end of the list
int DeleteEndVal(){
if(CheckListEmpty() == true){
cout << "Empty list. Nothing to delete." << endl;
return -1;
}
else{
int val;
Node *prev;
Node *cur;
if(head->next == NULL){
val = tail->data;
head = NULL;
tail = NULL;
}
else{
prev = head;
cur = head->next;
while (cur->next != NULL){
prev = prev->next;
cur = cur->next;
val = cur->data;
}
prev->next = NULL;
free(cur);
}
return val;
}
}