栈
栈(stack)是限定仅在一端插入或删除的线性表。虽然这个限制减小了栈的灵活性,但也使得栈更有效且更容易实现。许多应用都只需要栈提供受限制的插入和删除操作形式,在这种情况下使用较简单的栈比使用一般的线性表更有效。
栈遵守“后进后出”(Last In First Out)的原则,这意味着栈存储和删除元素的顺序与元素到达的顺序相反。习惯上称栈的可访问元素为栈顶(top)元素,元素插入栈称为入栈(push),删除元素时成为出栈(pop)。
下面代码定义了栈ADT:
template <class Elem> class Stack
{
public:
// 清空栈内的元素
virtual void clear() = 0;
// 入栈
virtual bool push(const Elem&) = 0;
// 出栈
virtual bool pop(Elem&) = 0;
// 获取栈顶元素的值
virtual bool topValue(Elem&) const = 0;
// 获取栈的元素个数
virtual int length() const = 0;
};
本文详细介绍了栈的数据结构,包括其限定的插入和删除操作、'后进先出'原则以及栈顶、入栈、出栈和获取栈顶元素等基本概念,并通过模板类展示了栈ADT的实现。
321

被折叠的 条评论
为什么被折叠?



