📄 stack.h
字号:
template<class T>
struct STACK_NODE //定义栈中的各结点类型
{
T Data;
STACK_NODE *pNext;
};
template <class T>
class CStack
{
protected:
int m_iSize; //定义栈长度
STACK_NODE <T> *m_pTOP; //定义栈顶指针
public:
CStack();
~CStack();
bool Push(T & x); //入栈
bool Pop(T & x); //出栈
bool IsEmpty(); //判栈空
void ClearStack();
CStack & operator<< (CStack); //重载赋值运算符
};
template <class T>
CStack <T>::CStack() //定义构造函数
{
m_iSize=0;
m_pTOP=NULL;
}
template <class T>
CStack <T>::~CStack()
{
ClearStack();
}
template <class T>
bool CStack <T>::IsEmpty()
{
return (m_iSize==0)?true:false;
}
template <class T>
bool CStack <T>::Push(T & x) //结点入栈
{
STACK_NODE<T> *p;
p=new STACK_NODE<T>; //为p结点分配存储空间
if(!p)
return false; //若分配失败,则返回
p->Data=x;
p->pNext=m_pTOP;
m_pTOP=p;
m_iSize++; //长度加1
return true;
}
template <class T>
bool CStack <T>::Pop(T & x) //结点出栈
{
STACK_NODE<T> *p;
if(m_pTOP) //若栈非空
{
x=m_pTOP->Data;
p=m_pTOP;
m_pTOP=m_pTOP->pNext; //修改栈顶指针
delete p; //删除结点
m_iSize--; //长度减1
return true;
}
return false;
}
template <class T>
void CStack <T>::ClearStack() //将栈清空
{
T p;
while(Pop(p));
}
class Staff //循环出栈,实现清除
{
public:
char m_strName[32];
int m_iAge;
float m_fSalary;
char m_strSex[4];
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -