我碰到一個鍛鍊來在網絡上,這是文字:實現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')意味着設計它的人真的不知道什麼他們在做。 –