栈的基本状态有:一般状态、栈空、栈满。当栈中没有元素时称为栈空;当栈中元素个数达到上限时,称为栈满;栈中有元素,但未达到沾满状态,则处于一般状态。
无论采用哪种数据结构,栈类中都应该包括以下基本操作:初始化、入栈、出栈、栈清空访问栈顶元素、检查栈的状态(满或空)
#include<iostream>
#include<cassert>
using namespace std;
template<typename T, int SIZE=10>
class Stack
{
protected:
T buffer[SIZE];
int top;
public:
Stack()
:top(-1)
{
}
bool IsEmpty()const { return top == -1 ? true : false; }
bool IsFull()const { return top == SIZE - 1 ? true : false; }
void Push(const T& value)
{
if(!IsFull())
{
buffer[++top] = value;
}
}
T Pop()
{
//断言宏
assert(!IsEmpty());
return buffer[top--];
}
void Clear()
{
top = -1;
}
const T& Top()const
{
assert(!IsEmpty());
return buffer[top];
}
};
int main()
{
Stack<int>a;
a.Push(5);
a.Push(8);
a.Push(9);
while (!a.IsEmpty())
{
cout << a.Pop() << endl;
}return 0;
}