我碰到一个锻炼来在网络上,这是文字:实现C++中的INT堆栈
编写类int_stack将管理整数堆栈。整数值将被存储在动态分配的数组中。
这个类将提出以下的成员函数:
int_stack(INT n)的构造,将动态分配Ñ 整数,
int_stack()构造分配20点的整数,
〜int_stack( )析构函数,
int empty()如果堆栈为空,返回值为1,否则为0 ,
INT满()的返回值是1,如果堆栈已满,否则为0,
void运算<(INT p)的推压(添加)在堆栈上的p值,
INT操作> (INT p)返回(和删除)上的 堆栈
我试图实现它顶部的值,但>(拉)运营商将无法正常工作。
这里是我的代码:
int_stack.h
class int_stack
{
private:
int* stack;
unsigned int n, p;
void init(unsigned int n);
public:
int_stack(unsigned int n);
int_stack();
~int_stack();
int empty();
int full();
void operator <(int i);
int operator >(int i);
};
int_stack.cpp
#include "int_stack.h"
void int_stack::init(unsigned int n)
{
this->stack = new int[n];
this->p = 0;
}
int_stack::int_stack(unsigned int n)
{
this->init(n);
}
int_stack::int_stack()
{
this->init(20);
}
int_stack::~int_stack()
{
delete this->stack;
}
int int_stack::empty()
{
return (this->p == 0 ? 1 : 0);
}
int int_stack::full()
{
return (this->p == n-1 ? 1 : 0);
}
void int_stack::operator <(int i)
{
if (!this->full())
this->stack[p++] = i;
}
int int_stack::operator >(int i)
{
if(!this->empty())
return this->stack[p--];
return 0;
}
我在做什么错?
在什么意义上它不工作?编译器错误?运行时错误?或者是什么? – 2013-10-30 18:38:07
'p'是项目的数量,但是你的数组索引是'0-(p-1)'。 – Joe
这是一个相当差的设计,所以不要付出太多的努力来实现它。使用'>'和'<'进行push和pop是非常可怕的,并且使用'empty()'和'full()'return'int'(C++具有'bool')意味着设计它的人真的不知道什么他们在做。 –