从数据结构的角度看,栈也是线性表的一种,其特殊性在于栈其基本的操作还是依靠线性表实现的。
栈只允许在栈顶进行插入和删除操作。
栈的存储方式也分顺序栈和链栈两种,个人觉得既然只运行对栈顶进行操作,链栈没什么意义啊。
#ifndef STACK_H_
#define STACK_H_
template <typename T>
class Stack
{
public:
Stack(int size = Stack_init_size);
//构造函数
~Stack();
Stack(const Stack<T> &s);
//拷贝构造函数
const Stack<T>& operator=(const Stack<T> &s);
//赋值构造函数
void ClearStack();
//清空栈
bool StackEmpty();
//若栈为空返回TRUE否则返回FALSE
int StackLength();
//返回栈的长度,即入栈元素个数
bool GetTop(T &elem);
//若栈不空,用elem返回栈顶元素,并返回true,否则返回ERROR