📄 stack.h
字号:
#include <assert.h>
template <class Type> class Stack
{
public:
Stack (int=50);
~Stack() {delete [] elements;}
void Push( const Type &item);
Type Pop();
Type GetTop();
void MakeEmpty() {top=-1;}
int IsEmpty() const {return top==-1;}
int IsFull() const {return top==maxSize-1;}
private:
int top;//在顺序存储分配下是栈顶指针
Type *elements;//在顺序存储分配下是存放栈中元素的栈数组
int maxSize;//栈最大可容纳元素个数
};
template <class Type> Stack <Type>::Stack(int s):top(-1),maxSize(s)
//建立一个最大尺寸为s的空栈,若分配不成功则错误处理
{
elements=new Type[maxSize];//创建栈空间
assert(elements!=0);//断言:动态存储分配成功与否
}
template <class Type> void Stack <Type>::Push (const Type &item)
//若栈 不满,则将元素item插入到该栈的栈顶,否则出错处理
{
assert(!IsFull());//断言:栈不满则继续执行
elements[++top]=item;//栈顶指针现加1,然后按此地址进栈
}
template <class Type> Type Stack <Type>::Pop()
//若栈不为空则函数返回该栈顶元素的地址,然后栈顶指针退1
{
assert(!IsEmpty());//断言:判栈空否,若断言成立则继续执行
return elements[top--];//返回栈顶元素的值,同时栈顶指针退1
}
template <class Type> Type Stack <Type>::GetTop()
//若栈不为空则函数返回该栈栈顶元素的地址
{
assert(!IsEmpty());//断言:判栈为空,若断言成立则继续执行
return elements[top];//返回栈顶元素的值
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -