#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
//顺序栈
#define MAX_SIZE 100000
//构造栈的结构体
typedef struct
{
int data[MAX_SIZE];
int top;
} ArrayStack;
//初始化栈
void initStack(ArrayStack* stack)
{
stack->top = -1;
}
//判断栈是否为空
bool isEmptyStack(ArrayStack* stack)
{
return stack->top == -1;
}
//判断栈是否为满
bool isFullStack(ArrayStack* stack)
{
return stack->top == MAX_SIZE - 1;
}
//入栈操作
void push(ArrayStack* stack, int x)
{
if(isFullStack(stack))
{
printf("Full\n");
return;
}
stack->top = stack->top + 1;
stack->data[stack->top] = x;
}
//出栈操作
void pop(ArrayStack* stack)
{
if(isEmptyStack(stack))
{
printf("Empty\n");
return;
}
stack->top = stack-> top - 1;
}
//输出栈顶元素
int query(ArrayStack* stack)
{
if(isEmptyStack(stack))
{
printf("Empty\n");
return -1;
}
return stack->data[stack->top];
}
//计算栈中元素数量
int size(ArrayStack* stack)
{
return stack->top + 1;
}
int main()
{
int n = 0;//输入指令的次数
int num = 0;//要入栈的元素
char order[6] = {0};//输入的指令
//申明并初始化栈
ArrayStack stack;
initStack(&stack);
scanf("%d",&n);
getchar();
while(n--)
{
scanf("%5s",order);
if(strcmp(order, "push") == 0)
{
scanf("%d",&num);
push(&stack,num);
}
else if(strcmp(order, "pop") == 0)
{
pop(&stack);
}
else if (strcmp(order, "query") == 0)
{
int val = query(&stack);
if(val != -1)
{
printf("%d\n",val);
}
}
else if(strcmp(order, "size") == 0)
{
printf("%d\n",size(&stack));
}
getchar();
}
return 0;
}