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


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

    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)读入操作字符。

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <string.h>
     4 int main()
     5 {
     6     int t, m, n, i, j, x;
     7     char a[20];
     8     int b[10010];
     9     scanf("%d", &t);
    10     for(j = 1; j <= t; j++)
    11     {
    12         scanf("%d%d", &m, &n);
    13         int num = 0;
    14         for(i = 1; i <= n; i++)
    15         {
    16             scanf("%s", a);
    17             if(strcmp(a, "P") == 0)
    18             {
    19                 scanf("%d", &x);
    20                 if(m > num)
    21                 {
    22                    b[num] = x;
    23                    num++;
    24                 }
    25                 else
    26                 {
    27                     printf("F
    ");
    28                 }
    29             }
    30             else if(strcmp(a, "A") == 0)
    31             {
    32                 if(num == 0)
    33                 {
    34                     printf("E
    ");
    35                 }
    36                 else
    37                 {
    38                     printf("%d
    ", b[num-1]);
    39                 }
    40             }
    41             else if(strcmp(a, "O") == 0)
    42             {
    43                 if(num == 0)
    44                 {
    45                     printf("E
    ");
    46                 }
    47                 else
    48                 {
    49                     printf("%d
    ", b[num - 1]);
    50                     num--;
    51                 }
    52             }
    53         }
    54        if(j != t)
    55        {
    56            printf("
    ");
    57        }
    58     }
    59     return 0;
    60 }
  • 相关阅读:
    Python 字符串(一)
    UVA 11552 四 Fewest Flops
    UVA 10534 三 Wavio Sequence
    UVA 1424 二 Salesmen
    UVA 11584 一 Partitioning by Palindromes
    CodeForces 549G Happy Line
    CodeForces 451C Predict Outcome of the Game
    CodeForces 567C Geometric Progression
    CodeForces 527B Error Correct System
    CodeForces 552C Vanya and Scales
  • 原文地址:https://www.cnblogs.com/xiaolitongxueyaoshangjin/p/12368762.html
Copyright © 2020-2023  润新知