• 题目1108:堆栈的使用


    题目描述:

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

    输入:

         对于每组测试数据,第一行是一个正整数 n,0<n<=10000(n=0 结束)。而后的 n 行,每行的第一个字符可能是'P’或者'O’或者'A’;如果是'P’,后面还会跟着一个整数,表示把这个数据压入堆栈;如果是'O’,表示将栈顶的值 pop 出来,如果堆栈中没有元素时,忽略本次操作;如果是'A’,表示询问当前栈顶的值,如果当时栈为空,则输出'E'。堆栈开始为空。

    输出:

        对于每组测试数据,根据其中的命令字符来处理堆栈;并对所有的'A’操作,输出当时栈顶的值,每个占据一行,如果当时栈为空,则输出'E’。当每组测试数据完成后,输出一个空行。

    样例输入:
    3
    A
    P 5
    A
    4
    P 3
    P 6
    O 
    A
    0
    样例输出:
    E
    5
    
    3

    总结:
    1. 用Scanner取得一个输入流时,先用in(它的变量)的nextInt取得一个整数,并回车结束而不是空格结束,下一次in将取得的是一个空串,而不是想要的,所以要多加一行in.nextLine()来去掉空行
    2. 比较字符串是否相等需要用String的equals,而不能直接用==,原因很简单。
     1 import java.util.Scanner;
     2 import java.util.Stack;
     3  
     4 public class Main{
     5     public static void main(String[] args){
     6         Scanner in=new Scanner(System.in);
     7         int n;
     8         n=in.nextInt();
     9         while(n!=0){
    10             Stack<Integer> st=new Stack();
    11             String line=in.nextLine();
    12             String[] t;
    13  
    14             for(int i=0;i<n;i++){
    15                 line=in.nextLine();
    16                 t=line.split(" ");
    17                 if(t[0].equals("P")){
    18                     st.push(Integer.parseInt(t[1]));
    19                 }
    20                 else if(t[0].equals("O")){
    21                     if(!st.isEmpty())
    22                         st.pop();
    23                 }
    24                 else if(t[0].equals("A")){
    25                     if(st.isEmpty())
    26                         System.out.println("E");
    27                     else
    28                         System.out.println(st.peek());
    29                 }
    30             }
    31             System.out.println();
    32             n=in.nextInt();
    33         }
    34     }
    35 }
    36 /**************************************************************
    37     Problem: 1108
    38     User: 0000H
    39     Language: Java
    40     Result: Accepted
    41     Time:1570 ms
    42     Memory:111344 kb
    43 ****************************************************************/
  • 相关阅读:
    什么是.NET Core以及.NET Core能做什么 菜鸟飞不动
    SQL数据库连接字符串的几种写法整理
    高并发
    前端 防抖&节流,你学到未啊?
    Promise实现一个函数,通过fetch请求一个接口'/api/getdata'(可能成功,也可能失败),超过3秒钟请求未返回则认为超时
    手写实现deepClone方法
    手写Promise.retry方法;实现次数内重试请求
    element-ui的table表格通过子表数据,进行展示左侧展开箭头
    页面导出为PDF格式
    js自定义数字跳动效果computeNumber
  • 原文地址:https://www.cnblogs.com/qq1029579233/p/4418048.html
Copyright © 2020-2023  润新知