1.我们可以手写一个栈,格式如下:
#include <bits/stdc++.h>
using namespace std;
#define intsize 1000
typedef struct//一个顺序表;
{
int *base;//也可以看作为数组首地址;
int *top;
int stacksize;//栈的长度;
}sqstack;
int initstack(sqstack &s ,int m)//初始化栈
{
s.base = new int[m];//分配内存空间;
if(!s.base) return -1;//创建失败返回-1;
s.top = s.base;
s.stacksize = m;
return 0;
}
void push(sqstack &s ,int n)//入栈
{
*s.top++ = n;//s.top初始默认为零;
}
int pop(sqstack &s)
{
return *--s.top;
}
int main()
{
sqstack s;
int t,n,m,k;
char x;
scanf("%d",&t);
while(t--)
{
scanf("%d %d",&m,&n);
initstack(s,m);
while(n--)
{
getchar();
x = getchar();
if(x == 'P')
{
scanf("%d",&k);
if(s.top-s.base<s.stacksize)
{
push(s,k);
}
else
{
printf("F\n");
}
}
else if (x == 'A')
{
if(s.top==s.base)//栈顶等于栈尾时栈为空
{
printf("E\n");
}
else
{
cout << *(s.top-1) << endl;
}
}
else if (x == 'O')
{
if(s.top==s.base)
{
printf("E\n");
}
else
{
cout << pop(s) <<endl;
}
}
}
cout << endl;
}
return 0;
}
2.也可以直接调用c++STL库中的来进行使用,代码如下:
#include<iostream>
#include<stack>
using namespace std;
int main(){
stack<int>mys;//<>里面为你的栈中元素的数据类型,示例为整形,所以为<int>;
mys.push(5);
mys.push(3);
mys.push(8);
mys.push(4);
mys.push(1);
mys.push(2);
mys.push(7);
while(!mys.empty()){
cout<<mys.top()<<" ";
mys.pop();
}
cout<<endl;
return 0;
}