栈:限定仅只能在末端进行插入和删除的线性表。
栈顶:允许插入和删除的一端。
栈底:不允许插入和删除的一端。
时间有序表:先进后出(FILO) /后进先出(LIFO)特征的线性结构。
空栈: top == -1
template <class T>
class Stack{
public:
Stack(int MaxStackSize=10);
~Stack() { delete [] stack;}
boolIsEmpty() const {return top==-1;}
boolIsFull() const {return top==MaxTop;}
T Top() const;
Stack<T>& Add(const T& x);
Stack<T>& Del(T& x);
void MakeEmpty(){top=-1;} //清空栈
private:
int top;//栈顶
int MaxTop;//最大的栈顶值
T *stack;//堆栈元素数组
};
template<class T>
Stack<T>::Stack(int MaxStackSize){
MaxTop=MaxStackSize-1;
stack=new T[MaxStackSize];
top=-1;
}
template<class T>
Stack<T>& Stack<T>::Add(const T& x){
if(IsFull())
{cout<<"no memory;"<<endl;return *this;}
top=top+1;
stack[top]=x;
return *this;
}
template<class T>
Stack<T>& Stack<T>::Del(T& x){
if(IsEmpty())
{cout<<"no element"<<endl;return *this;}
x=stack[top];
top=top-1;
return *this;
}
本文详细介绍了一种限定仅在末端进行插入和删除操作的线性表——栈的数据结构。包括栈的基本概念如栈顶和栈底,以及其核心特性:后进先出(LIFO)。此外还提供了模板化的C++类实现,涵盖了栈的基本操作如添加元素、删除元素等。
3094

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



