Как проверить, пустой ли стек? Доброго времени суток. Делаю стек с Linked Lists и классами на C++, допустим есть класс элемента стека и класс самого стека. В самом начале создаем 1 элемент стека "top" (он же пока что и является верхним) при помощи конструктора с полями key = NULL, deeperElement = NULL; И теперь я хочу в стеке сделать метод isEmpty, но сравнивать NULL и числовой тип глупо. Наверное, лучше скинуть код:class stackElement { private: int key; stackElement *deeper; public: stackElement() { key = NULL; deeper = NULL; }
void setDeeper(stackElement *d) { deeper = d; } stackElement* getDeeper() const { return deeper; } void setValue(int value) { key = value; } int getValue() const { return key; } }; class secondStack { private: stackElement *top; public: void Push(int n) { stackElement *temp = new stackElement; temp->setValue(n); temp->setDeeper(top); top = temp; } int Pop() { int deletedInteger = top->getValue(); stackElement *temp = top; top = top->getDeeper(); delete temp; return deletedInteger; } bool isEmpty() { // дураку ясно, что если верхнему элементу стэка присвоить значение 0, то работать это не будет if (top->getValue() == NULL) return true; return false; } }; Собственно как сделать эту проверку? Может какую другую константу вместо NULL ?
Для проверки, пустой ли стек, можно сравнивать указатель top на nullptr вместо сравнения значения ключа элемента стека на NULL.
В методе isEmpty() замените условие на следующее:
bool isEmpty(){
if (top == nullptr)
return true;
return false;
}
Таким образом, если указатель top равен nullptr, это будет означать, что стек пуст.