根据楼主的意思,是做一个数组的存储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<<"栈已满"<
}
a[top++] = x;
}
int Stack::pop()
{
return a[--top];
}
之前正好写了一个,贴给你
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;
}
}