📄 stack.h
字号:
// Stack.h: interface for the CStack class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_STACK_H__980D3DD0_B4C2_11D9_ABF6_000AEB106808__INCLUDED_)
#define AFX_STACK_H__980D3DD0_B4C2_11D9_ABF6_000AEB106808__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
template <class T>
struct SNode
{
T data;
SNode* pNext;
};
template <class T>
class CStack
{
protected:
SNode<T>* m_pTop;
int m_nElemNum;
public:
CStack()
{
m_pTop=NULL;
m_nElemNum=0;
}
virtual ~CStack()
{
clear();
}
void initiate()
{
clear();
}
void push(T& el);
bool pop(T& el);
void clear();
bool empty();
T& top();
int getCount();
};
template <class T>
void CStack<T>::push(T& el)
{
SNode<T>* p=new SNode<T>;
p->data=el;
p->pNext=m_pTop;
m_pTop=p;
m_nElemNum++;
}
template <class T>
bool CStack<T>::pop(T& el)
{
if(m_nElemNum==0) return false;
SNode<T>* p=m_pTop;
m_pTop=p->pNext;
m_nElemNum--;
el=p->data;
delete p;
return true;
}
template<class T>
T& CStack<T>::top()
{
T temp;
if(m_nElemNum!=0)
temp=m_pTop->data;
return temp;
}
template<class T>
int CStack<T>::getCount()
{
return m_nElemNum;
}
template<class T>
bool CStack<T>::empty()
{
bool bEmpty;
if(m_nElemNum==0)bEmpty=true;
else bEmpty=false;
return bEmpty;
}
template<class T>
void CStack<T>::clear()
{
SNode<T>* p;
while(m_pTop!=NULL)
{
p=m_pTop;
m_pTop=m_pTop->pNext;
delete p;
m_nElemNum--;
}
m_nElemNum=0;
}
#endif // !defined(AFX_STACK_H__980D3DD0_B4C2_11D9_ABF6_000AEB106808__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -