📄 stack.h
字号:
//栈类模板
#ifndef STACK_CLASS
#define STACK_CLASS
const int MaxStackSize =50; //栈的大小,即栈中元素的最大个数
//类的声明
template <class T>
class Stack
{
private:
T stacklist[MaxStackSize]; //数组,用于存放栈的元素
int top; //栈顶位置(数组下标)
public:
Stack(void); //构造函数,初始化栈
void Push(const T& item); //将元素item压入栈
T Pop(void); //将栈顶元素弹出栈
void ClearStack(void); //将栈清空
T Peek(void)const; //访问栈顶元素
int StackEmpty(void)const; //测试是否栈空
int StackFull(void)const; //测试是否栈满
};
//类的实现
template <class T>
Stack <T>::Stack (void):top(-1) //构造函数,栈顶初始化为-1
{}
template <class T>
void Stack <T>::Push (const T& item) //将元素item压入栈
{
if(top==MaxStackSize-1) //如果栈满,程序终止
{
std::cerr<<"Stack overflow!"<<endl;
exit(1);
}
top++; //栈顶指针增1
stacklist[top]=item; //将新元素压入栈
}
template <class T>
T Stack <T>::Pop (void) //将栈顶元素弹出栈
{
T temp;
if(top==-1) //如果栈空,程序终止
{
std::cerr<<"Attempt to pop an empty stack!"<<endl;
exit(1);
}
temp=stacklist[top]; //取出栈顶元素
top--; //栈顶指针自减
return temp; //返回栈顶元素
}
template <class T>
T Stack <T>::Peek (void) const //访问栈顶元素
{
if(top==-1) //如果栈空,程序终止
{
std::cerr<<"Attempt to pop an empty stack!"<<endl;
exit(1);
}
return stacklist[top]; //返回栈顶元素
}
template <class T>
int Stack <T>::StackEmpty (void) const //测试栈是否空
{ return top==-1;} //如果栈空则返回TRUE,否则返回FALSE
template <class T>
int Stack <T>::StackFull (void) const //测试栈是否满
{ return top==MaxStackSize-1;} //如果栈满则返回TRUE,否则返回FALSE
template <class T>
void Stack <T>::ClearStack(void) //清空栈
{top=-1;}
#endif //STACK_CLASS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -