#pragmaonce
#includeiostream
templatetypenameDATA
classMyStack
{
public:
MyStack(intiSize)//构造函数
{
m_iSize=iSize;
m_iTop=-1;
m_pStack=newDATA[iSize];
}
~MyStack()//析构函数
{
delete[]m_pStack;
m_pStack=NULL;
m_iTop=-1;
m_iSize=0;
}
boolIsEmpty()const;//判断是否为空
boolIsFull()const;//判断是否为满
intSize();//获取栈内元素个数
boolPus(constDATAdata);//向栈内压进元素
boolPop(DATAdata);//从栈内弹出元素
private:
DATA*m_pStack;
intm_iTop;
intm_iSize;
};
templatetypenameDATA
boolMyStackDATA::IsEmpty()const
{
returnm_iTop==-1?true:false;
}
templatetypenameDATA
boolMyStackDATA::IsFull()const
{
returnm_iTop==m_iSize-1?true:false;
}
templatetypenameDATA
intMyStackDATA::Size()
{
returnm_iTop+1;
}
templatetypenameDATA
boolMyStackDATA::Pus(constDATAdata)
{
if(IsFull())
{
returnfalse;
}
else
{
++m_iTop;
m_pStack[m_iTop]=data;
returntrue;
}
}
templatetypenameDATA
boolMyStackDATA::Pop(DATAdata)
{
if(IsEmpty())
{
returnfalse;
}
else
{
data=m_pStack[m_iTop];
--m_iTop;
returntrue;
}
}