#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int *base;
int *top;
int stacksize;
} sqstack;
void initstack(sqstack *s,int n)
{
s->base=s->top=(int *)malloc(sizeof(int)*n);
if(!s->base) exit(-1);
s->stacksize=n;
}
void push(sqstack *s,int e)
{
*(s->top)=e;
s->top++;
}
void pop(sqstack *s)//弹出并表示栈顶值
{
if(s->base!=s->top)
{
printf("%d\n",*(s->top-1));
s->top--;
}
}
void print(sqstack *s)//只表示栈顶值
{
if(s->base!=s->top)
printf("%d\n",*(s->top-1));
}
/*int isempty(sqstack *s)
{
if(s->base==s->top)
return 1;
else return 0;
}
*/
int main()
{
int t,n,m,i,j;
char a;
int x;
int sum;
scanf("%d",&t);
for(j=1;j<=t;j++)//t组测试数据
{
sum=0;
scanf("%d%d",&m,&n);
sqstack s;
initstack(&s,m);
for(i=1;i<=n;i++)//n组操作数据
{ getchar();
scanf("%c",&a);
if(a=='P')
{
scanf("%d",&x);
if(sum<m)
{push(&s,x);
sum++;}//sum应该放在栈未满内
else printf("F\n");
// printf("%d\n",sum);
}
if(a=='O')
{
if(sum==0) printf("E\n");
else
{pop(&s);
sum--;}
//printf("%d\n",sum);
}
if(a=='A')
{
if(sum==0) printf("E\n");
else print(&s);
//printf("%d\n",sum);
}
}
if(j!=t) printf("\n");
}
return 0;
}
数据结构实验之栈与队列八:栈的基本操作(new)
最新推荐文章于 2022-03-28 20:52:32 发布