C++ 定义一个堆栈类 ,补充完整

2024-11-07 11:48:34
推荐回答(2个)
回答1:

根据楼主的意思,是做一个数组的存储int的简单栈空间,代码如下,已经测试过了。
class Stack
{int *a;
int len,top;
public:
Stack( int n); //初始化堆栈
~Stack( ); //析构堆栈空间
Stack( const Stack& t); //拷贝构造函数
void push( int x); //将x压入堆栈
int pop( ); //将堆栈元素弹出返回
};

Stack::Stack(int n)
{
a=new int[n];
len=n;
top=0;
}
Stack::~Stack()
{
delete []a;
}

Stack::Stack(const Stack& t)
{
a=new int[t.len];
len=t.len;
top=t.top;
for(int i=0; i < len; i++)
a[i] = t.a[i];
}

void Stack::push(int x)
{
if(top == len )
{
cout<<"栈已满"< return;
}
a[top++] = x;
}

int Stack::pop()
{
return a[--top];
}

回答2:

之前正好写了一个,贴给你
class MyStack
{
private:
int* m_data;
int m_top;
public:
MyStack( int size );
~MyStack();
bool isEmpty();
void pop();
void push( const int& x );
int top() const;

};

MyStack::MyStack( int size = 20 )
{
m_data = new int[size];
m_top = 0;
}

MyStack::~MyStack()
{
delete []m_data;
}

void MyStack::pop()
{
if( m_top != 0 )
{
m_top--;
}
}

void MyStack::push( const int& x )
{
if( m_top<20 )
{
m_data[m_top++] = x;
}

// else
// MessageBox( NULL, L"已达到栈的上限", L"警告", MB_OK );
}

int MyStack::top() const
{
return m_data[m_top];
}

bool MyStack::isEmpty()/* hwt */
{
if(!m_top)
return true;
else
return false;
}
}