zoukankan      html  css  js  c++  java
  • 数据结构实验之栈与队列八:栈的基本操作

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

    Description

    堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。

    Input

    首先输入整数t(1 <= t <= 10),代表测试的组数,以后是 t 组输入。
     对于每组测试数据,第一行输入两个正整数 m(1 <= m <= 100)、n(1 <= n <= 1000),其中m代表当前栈的最大长度,n代表本组测试下面要输入的操作数。 而后的 n 行,每行的第一个字符可能是'P’或者'O’或者'A’;如果是'P’,后面还会跟着一个整数,表示把这个数据压入堆栈;如果是'O’,表示栈顶元素出栈;如果是'A',表示询问当前栈顶的值'。

    Output

     对于每组测试数据,根据其中的命令字符来处理堆栈;
    (1)对所有的'P'操作,如果栈满输出'F',否则完成压栈操作;
    (2)对所有的'A'操作,如果栈空,则输出'E',否则输出当时栈顶的值;
    (3)对所有的'O'操作,如果栈空,则输出'E',否则输出栈顶元素的值,并让其出栈;
    每个输出占据一行,每组测试数据(最后一组除外)完成后,输出一个空行。

    Sample

    Input 

    2
    5 10
    A
    P 9
    A
    P 6
    P 3
    P 10
    P 8
    A
    P 2
    O
    2 5
    P 1
    P 3
    O
    P 5
    A

    Output 

    E
    9
    8
    F
    8
    
    3
    5

    Hint

    建议: 用串的方式(%s)读入操作字符。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main()
    {
        int t, m, n, i, j, x;
        char a[20];
        int b[10010];
        scanf("%d", &t);
        for(j = 1; j <= t; j++)
        {
            scanf("%d%d", &m, &n);
            int num = 0;
            for(i = 1; i <= n; i++)
            {
                scanf("%s", a);
                if(strcmp(a, "P") == 0)
                {
                    scanf("%d", &x);
                    if(m > num)
                    {
                       b[num] = x;
                       num++;
                    }
                    else
                    {
                        printf("F
    ");
                    }
                }
                else if(strcmp(a, "A") == 0)
                {
                    if(num == 0)
                    {
                        printf("E
    ");
                    }
                    else
                    {
                        printf("%d
    ", b[num-1]);
                    }
                }
                else if(strcmp(a, "O") == 0)
                {
                    if(num == 0)
                    {
                        printf("E
    ");
                    }
                    else
                    {
                        printf("%d
    ", b[num - 1]);
                        num--;
                    }
                }
            }
           if(j != t)
           {
               printf("
    ");
           }
        }
        return 0;
    }
  • 相关阅读:
    三大主流负载均衡软件对比(LVS+Nginx+HAproxy)
    nginx 提示the "ssl" directive is deprecated, use the "listen ... ssl" directive instead
    centos安装nginx并配置SSL证书
    hadoop创建目录文件失败
    The server time zone value 'EDT' is unrecognized or represents more than one time zone.
    脚本启动SpringBoot(jar)
    centos做免密登录
    数据库远程连接配置
    Bash 快捷键
    TCP三次握手四次断开
  • 原文地址:https://www.cnblogs.com/xiaolitongxueyaoshangjin/p/12884842.html
Copyright © 2011-2022 走看看