Как проверить, пустой ли стек? Доброго времени суток.
Делаю стек с 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 ?

21 Авг 2019 в 07:05
243 +1
0
Ответы
1

Для проверки, пустой ли стек, можно сравнивать указатель top на nullptr вместо сравнения значения ключа элемента стека на NULL.

В методе isEmpty() замените условие на следующее:

bool isEmpty()
{
if (top == nullptr)
return true;
return false;
}

Таким образом, если указатель top равен nullptr, это будет означать, что стек пуст.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир