33,311
社区成员
发帖
与我相关
我的任务
分享
class Stack {
public:
// 构造过程中分配内存
Stack (size_t uCapacity) : m_pArray (new int[uCapacity]), m_uCapacity (uCapacity), m_uTop (0) {}
// 析构过程中释放内存
~Stack (void) {
if (m_pArray) {
delete[] m_pArray;
m_pArray = NULL;
}
m_uCapacity = 0;
m_uTop = 0;
}
// 压入
void Push (int nData) {
if (m_uTop >= m_uCapacity)
throw OverFlow ();
m_pArray[m_uTop++] = nData;
}
// 弹出
int Pop (void) {
if (! m_uTop)
throw UnderFlow ();
return m_pArray[--m_uTop];
}
//获取栈中元素个数
int Length()
{
return ++m_uTop;
}
private:
// 上溢异常
class OverFlow : public exception {
public:
const char* what (void) const throw () {
return "堆栈上溢!";
}
};
// 下溢异常
class UnderFlow : public exception {
public:
const char* what (void) const throw () {
return "堆栈下溢!";
}
};
int* m_pArray; // 数组
size_t m_uCapacity; // 容量
size_t m_uTop; // 栈顶
};