数据结构实验之栈与队列八:栈的基本操作(new)

#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;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值