栈的逻辑结构
栈: 限定仅在表尾进行插入和删除操作的线性表.
空栈:不含任何数据元素的栈.
允许插入和删除的一端称为栈顶,另一端称为栈底.
栈的逻辑结构
例:有三个元素按a、b、c的次序依次进栈,且每个元素只允许进一次栈,则可能的出栈序列有多少种?
情况1:
情况2:
注意:栈只是对表插入和删除操作的位置进行了限制,并没有限定插入和删除操作进行的时间.
栈的顺序存储结构及实现
顺序栈—栈的顺序存储结构
顺序栈类的声明
const int MAX_SIZE=100;
template<class T>
class seqStack
{
public:
seqStack();
~seqStack();
void Push(T x);
T Pop();
T GetTop();
bool Empty();
private:
T data[MAX_SIZE];
int top;
}
顺序栈的实现—入栈
操作接口: void Push(T x);
template<class T>
void seqStack<T>::Push(T x)
{
if(top==MAX_SIZE-1) throw"溢出";
top++;
data[top]=x;
}
顺序栈的实现—判断是否是空栈
操作接口: bool Empty()
template<class T>
bool seqStack<T>::Empty()
{
if(top==-1)
return true;
return false;
}
顺序栈的实现—取栈顶
操作接口: T GetTop()
template <class T>
T seqStack<T>