堆栈是限定插入和删除操作都在表的同一端进行的线性表,是后进先出(LIFO)的线性数据结构。
#include <iostream>
using namespace std;
//堆栈基类
template <typename T>
class Stack{
public:
virtual bool IsEmpty() const = 0; //若栈空,则返回true
virtual bool IsFull() const = 0; //若栈满,则返回true
virtual bool Top(T &x) const = 0; //在x中返回栈顶元,若操作成功,则返回true
virtual bool Push(T x) = 0; //在栈顶插入元素x(入栈),若操作成功,则返回true
virtual bool Pop() = 0; //从栈中删除栈顶元素(出栈),若操作成功,则返回true
virtual void Clear() = 0; //清除栈中全部元素
};
一、堆栈的顺序表示
和线性表的顺序表示一样,是用数组来构造的。
//堆栈的顺序表示
template <typename T>
class SeqStack:public Stack<T>{
private:
int top; //栈顶指针
int maxTop; //最大栈顶指针
T* s;
public:
SeqStack(