class ArrayStack
{
public:
ArrayStack(int maxsize)
{
this->MaxSize = maxsize;
this->Stack = new int[sizeof(int)*this->MaxSize];
}
bool isFull()
{
return this->Top == this->MaxSize - 1;
}
bool isEmpty()
{
return this->Top == -1;
}
void Push(int item)
{
if (isFull())
{
cout << "栈已满,无法添加元素" << endl;
return;
}
Top++;
Stack[Top] = item;
}
int Pop()
{
if (isEmpty())
{
cout << "栈为空,无法弹出元素" << endl;
return -1;
}
int val= Stack[Top];
Top--;
return val;
}
void List()
{
if (isEmpty())
{
cout << "栈空,没有数据" << endl;
return;
}
for (int i = this->Top; i > -1; i--)
{
cout << this->Stack[i] << endl;
}
}
private:
int MaxSize;
int *Stack;
int Top = -1;
};
int main()
{
ArrayStack Stack(6);
char key;
bool loop = true;
while (loop)
{
cout << "----------------Menu----------------------" << endl;
cout << "----------------show----------------------" << endl;
cout << "----------------exit----------------------" << endl;
cout << "----------------push----------------------" << endl;
cout << "----------------pop-----------------------" << endl;
cout << "------------------------------------------" << endl;
cout << "请输入你想进行的操作:";
cin >> key;
switch (key)
{
case 's':
Stack.List();
break;
case 'e':
loop = false;
break;
case 'u':
cout << "输入你想加入堆栈的数据:";
int val;
cin >> val;
Stack.Push(val);
break;
case 'o':
int num = Stack.Pop();
if (num == -1)
{
break;
}
else
{
cout << "删除成功,出栈数据为" << num << endl;
}
break;
}
}
cout << "程序已退出" << endl;
system("pause");
return 0;
}