Как вы его запрограммировали, он печатает «Стек пуст», только если стек уже пуст при вызове pop
, а не когда он имеет 1 элемент и пуст только после вызова pop
.
Предположим, у вас есть 1 элемент в стеке.Таким образом, top
равно 0.
int pop() {
if (!(this->isEmpty())) {
Это if
оценивается как true, и поэтому ничего не будет напечатано.Это потому, что isEmpty()
оценивается в false
с top
, установленным в 0.
В первую очередь вам нужно сделать pop, а , а затем , проверить, пуст ли стек,В любом случае нужно проверить это в начале, потому что вы не можете выбросить пустой стек.