堆栈类的简单实现
第一次在csdn写博客,做一个简单的小内容。
最近一遍学数据结构一边练习c++,就写了一个简单的堆栈类。
没有额外的操作,只包括基本的压栈、弹栈、清栈。
/**************堆栈****************/
template<class T>
class Stack
{
public:
Stack(T a = 10) { size = a; Datapoint = new T[size]; po = -1; };
~Stack() { delete[] Datapoint; };
void Push(T a);//压栈
T Pull();//弹栈
void Clear() { po = -1; }//清栈
private:
int size;//栈容量
T *Datapoint;//数组(顺序栈)
int po;//栈顶下标
bool Empty();//判断是否为空
bool Full();//判断是否满栈
};
template<class T>
bool Stack<T>::Empty()
{
if (po == -1)
return true;//为空,返回真
else
return false;//非空,返回假
}
template<class T>
bool Stack<T>::Full()
{
if (po == size - 1)
return true;//满栈。返回真
else
return false;//未满,返回假
}
template<class T>
void Stack<T>::Push(T a)
{
if (!Full())
{
po++;
Datapoint[po] = a;
}
else
{
cout << "\n!!!该栈已满,不可继续添加存储。\n";
}
}
template<class T>
T Stack<T>::Pull()
{
if (!Empty())
{
return Datapoint[po--];
}
else
cout << "\n!!!该栈为空,无可输出内容。\n";
}