C++ Advanced, Task07_05_Linked_List - защо ни е Node * prev? И къде бъркам в деструктора?
Здравейте,
не мога да разбера защо имаме тук и пойнтери назад, това възможност за обрато обхождане ли е? Повечето реализации, които намерих са с пойнтери с връзка само за напред, защо ни трябват и за назад?
Kak да разпиша деструктора, kъде бъркам тук или е правилно разписан?
List::~List() {
if (!this->size != 0) {
Node * tempH = this->head;
this->tail = NULL; // Toва зануляване тук вярно ли е? , мисля че е nullptr this->tail за първия елемент ??
Node * tempT = this->tail;
while (tempH->getNext() != NULL) {
tempT = tempH;
tempH = tempH->getNext();
delete tempT;
}
delete tempH;
}
//имаме:
class Node {
private:
int value;
Node * prev;
Node * next;
и полета на клас List:
Node * head;
Node * tail;
size_t size;
Поздрави!
Благодаря за коментара. Линковете са интересни. Аз просто се ръководя от правилото, че един пойнтер го нулираме само ако след това ще го използваме отново. Обаче след като се извика деструктора, обекта не съществува повече и няма как да използваме пойнтера (нямаме достъп до него чрез обекта). С две думи: няма обект - няма проблем, както казваше един мустакат чичко