Стек на основе массива - EcsFlash/DataTypes GitHub Wiki
Исходный код - тут
Стек на основе массива - это все тот же стакан, но теперь мы будем использовать массив, вместо привычных нам узлов.
StackArr(int len = 1)
{
size = len;
mass = new T[size];
top = -1;
}
~StackArr()
{
delete[]mass;
}
void clear()
{
while (!isEmpty())
removeElem();
}
bool isEmpty()
{
if (top < 0)
return true;
return false;
}
void addElem(T element)
{
top++;
top = top % size;
mass[top] = element;
}
void removeElem()
{
if (!isEmpty())
{
top--;
}
}
Извлечение элемента из стека(тут надо кидаться ошибками, если стек пустой,но мы этим заниматься не будем)
T peek()
{
if(!isEmpty())
return mass[top];
}
Почему нужно кидаться ошибками? Да потому что если стек пустой, то мы ничего вернуть не можем, однако функция обязана что-то вернуть и в данном случае вернет какое-нибудь дефолтное значение для T. Например если есть пустой стек StackArr<int> st
то при вызове функции peek она вернет 1, что может нарушить логику выполнения вашего алгоритма.