#include <iostream>
using namespace std;
/*struct Node
{
int elem;
Node *link;
};*/
class STACK
{
public:
STACK(int size); //栈初始空间,容量,栈顶
~STACK(); //回收内存
bool push(int obj); //判满
bool pop(int &elem); //判空,出栈
int length();
void traverse();
private:
int *top; //栈顶指针
int m_size;
int m_length;
};
STACK::STACK(int size)
{
m_size = size;
top = new int(m_size);
m_length = 0;
}
STACK ::~STACK()
{
delete top;
}
bool STACK::push(int obj) {
if (m_length == m_size)
{
cout << "full" << endl;
return false;
}
top[m_length] = obj;
m_length++;
return true;
}
bool STACK::pop(int &elem) {
if (m_length == 0)
{
cout << "empty" << endl;
return false;
}
m_length--;
elem = top[m_length];
return true;
}
int STACK::length() {
return m_length;
}
void STACK::traverse() {
for (int i = 0; i < m_length; i++)
cout << top[i] <<" ";
}
int main() {
STACK *st=new STACK(5);
st->push(1);
st->push(3);
st->push(1);
st->push(4);
cout << st->length() << endl;
st->traverse();
//delete []st;
//st->~STACK();
// st = NULL;
system("pause");
return 0;
}