把线性表的插入和删除操作限制在同一端进行,就得到栈数据结构。因此,栈是一个后进先出(last-in-first-out, LIFO)的数据结构。
栈的抽象数据类型如下:
抽象数据类型
{
实例
线性表;一端称为底,另一端称为顶
操作
empty(); //栈为空时返回true,否则返回false
size(); //返回栈中元素个数
top(); //返回栈顶元素
pop(); //删除栈顶元素
push(); //将元素x压入栈顶
}
C++抽象类栈
template<class T>
class stack
{
public:
virtual ~stack() {}
virtual bool empty() const = 0;
//返回true,当且仅当栈为空
virtual int size() const = 0;
//返回栈中元素个数
virtual T& top() = 0;
//返回栈顶元素
virtual void pop() = 0;
//删除栈顶元素
virtual void push(const T& theElement) = 0;
//将元素theElement压入栈顶
}