сабж: как нужно удалять элементы из стека и нужно ли вообще это делать? т.е. нужно ли делать delete при каждом вызове pop() или достаточно просто сдвигать указатель на след. элемент списка? Если нужно, то правильно ли я это сделал, а то просто я просто не очень хорошо понимаю механизм освобождения памяти...
| Код | // структура элемента списка struct Item { int data; Item* next; };
// сам стек class Stack { private: Item* current; // Сслыка на текущий элемент
public: class EmptyException {};
Stack() : current(NULL) { }
void push(int d) { Item* newitem = new Item; newitem->data = d; newitem->next = current; current = newitem; }
int pop() { if (! current) { throw EmptyException(); } // --------- // вот в этом куске кода что-то сомневаюсь... int result = current->data; // сохраняем результат Item* tmp_pointer = current->next; // сохраняем указатель на след. элемент delete current; // удаляем текущий элемент current = tmp_pointer; // делаем следующий текущим // --------- return result; } }; |
|