不知道有没有错误。
///
// Stack.h : CStack 顺序栈类
//
#include <assert.h>
#define STACK_SIZE 100
template <class Type>
class CStack {
// 方法
public :
// 构造
CStack();
CStack(Type arrInitial[], int iLen);
// 是否为空
bool IsEmpty();
// 取栈顶元素
Type GetTop();
// 取栈长度
int GetSize();
// 入栈(返回栈长度)
int Push(Type value);
// 出栈(返回栈长度)
int Pop();
// 清空栈
void Clear();
// 属性
private :
Type m_arrStack[STACK_SIZE];
int m_pTop;
};
// 构造
template <class Type>
CStack<Type>::CStack()
{
m_pTop = 0;
}
// 构造
template <class Type>
CStack<Type>::CStack(Type arrInitial[], int iLen)
{
m_pTop = iLen;
assert(m_pTop <= STACK_SIZE);
for(int i = 1; i <= iLen; i++)
m_arrStack[i - 1] = arrInitial[i - 1];
}
// 是否为空
template <class Type>
bool CStack<Type>::IsEmpty()
{
return !m_pTop;
}
// 取栈顶元素
template <class Type>
Type CStack<Type>::GetTop()
{
assert(m_pTop > 0);
assert(m_pTop <= STACK_SIZE);
return m_arrStack[m_pTop - 1];
}
// 入栈(返回栈长度)
template <class Type>
int CStack<Type>::Push(Type value)
{
assert(m_pTop < STACK_SIZE);
m_pTop++;
m_arrStack[m_pTop - 1] = value;
return m_pTop;
}
// 出栈(返回栈长度)
template <class Type>
int CStack<Type>::Pop()
{
assert(m_pTop > 0);
m_pTop--;
return m_pTop;
}
// 取栈长度
template <class Type>
int CStack<Type>::GetSize()
{
return m_pTop;
}
// 清空栈
template <class Type>
void CStack<Type>::Clear()
{
m_pTop = 0;
}