📄 stack.h
字号:
const int STACK_SIZE = 10;
const int INCREASMENT = 10;
using namespace std;
///////////////////////////////////////////////栈类模板定义开始**********************************************************
template <class T>
class Stack
{
T *base;
T *top;
int space;
int size;
public:
Stack()
{
base = new T[STACK_SIZE];
top = base;
space = STACK_SIZE;
size = 0;
}
~Stack()
{
delete []base;
base = NULL;
top = NULL;
}
int Push(T e);
int Pop(T &e);
int GetTop(T &e);
int StackEmpty();
int GetOne(int i, T &e);//取出栈中第i个元素。
};
//*********************
template <class T>
int Stack<T>::Push(T e)//元素e推入栈
{
if (size >= space)
{
if (!(base = (T *)realloc(base, (space + INCREASMENT)*sizeof(T))))
{
exit(0);
}
else
{
top = base + size;
space += INCREASMENT;
}
}
*top++ = e;
size++;
return 1;
}
//*********************
template <class T>
int Stack<T>::Pop(T &e)//弹出栈顶元素,栈顶元素存入e中
{
if (size == 0)
{
return 0;
}
else
{
e = *--top;
size--;
return 1;
}
}
//*********************
template <class T>
int Stack<T>::GetTop(T &e)//取栈顶元素,存入e中
{
if (size == 0)
{
return 0;
}
else
{
e = *(top - 1);
return 1;
}
}
//*********************
template <class T>
int Stack<T>::StackEmpty()//判断栈是否为空
{
if (size == 0)
{
return 1;
}
else
{
return 0;
}
}
//*********************
template <class T>
int Stack<T>::GetOne(int i, T &e)//取出栈中第i个元素,i(0~size-1);
{
e = *(base + i);
return 1;
}
////////////////////////////////////////////////////////////栈类模板定义结束*********************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -