堆栈定义
堆栈本质是一个线性表,其插入和删除操作都在表的同一端进行,其中表的两端分别被称为栈顶和栈低。堆栈的结构如下:
刚开始的时候,top指向栈底,然后每进入一个元素,top指针就上移一位,每删除一个元素,top就下移一位。这个过程称为出栈入栈。图解如下(来自于《数据结构算法与应用-C++语言描述》):
如上图,如果入栈一个元素E,那么结果如图b所示,如果图b出栈三个元素,那么结果如图c所示。由此可知,堆栈的一个特点就是后进先出(LIFO)。
用顺序表实现堆栈
首先有一个顺序存储的线性表,在此基础上,实现对表的一端进行操作的方法,使其满足堆栈后进先出(LIFO)的规则即可。
顺序表实现的堆栈的类代码如下:
//顺序表实现堆栈的参考代码
template<class T>
class Stack{
public:
Stack(int StackMaxSize);//构造方法
~Stack();//析构函数
void Push(const T& x);//入栈
T Pop();//出栈
bool IsEmpty();//判断栈是否为空
bool IsFull();//判断栈是否已满
private:
int MaxTop;