读书人

初学者一道题不会

发布时间: 2013-01-06 15:44:47 作者: rapoo

菜鸟求助,一道题不会。
7.下面是一个整型堆栈类intStack的声明,请给出该类所有数据成员的类外定义。
class intStack
{public:
intStack (int size=10);//构造函数
~intStack ();//析构函数
bool Push(int elem);//入栈操作
bool Pop(int &elem); //出栈操作
int Length( ) const; //获取栈中元素的个数
private:
int *data; //指向动态数组的指针
int top; //栈顶指针
int size; //堆栈的容量
};


这个咋写啊?
[解决办法]

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; // 栈顶
};

读书人网 >C++

热点推荐