模拟栈(训练栈的知识)

简介: 模拟栈(训练栈的知识)

模拟栈

实现一个栈,栈初始为空,支持四种操作:

push x – 向栈顶插入一个数 x;

pop – 从栈顶弹出一个数;

empty – 判断栈是否为空;

query – 查询栈顶元素。

现在要对栈进行 M 个操作,其中的每个操作 3 和操作 4 都要输出相应的结果。

输入格式

第一行包含整数 M,表示操作次数。

接下来 M 行,每行包含一个操作命令,操作命令为 push x,pop,empty,query 中的一种。

输出格式

对于每个 empty 和 query 操作都要输出一个查询结果,每个结果占一行。

其中,empty 操作的查询结果为 YES 或 NO,query 操作的查询结果为一个整数,表示栈顶元素的值。

数据范围

1≤M≤100000,

1≤x≤109

所有操作保证合法。

输入样例:

10
push 5
query
push 6
pop
query
pop
empty
push 4
query
empty

输出样例:

5
5
YES
4
NO

提交代码:

import java.util.Scanner;
import java.util.Stack;
public class Main
{
    public static void main(String [] args)
    {
        Stack<Integer> stack = new Stack<Integer>();
        Scanner in = new Scanner(System.in);   
        int n = in.nextInt();
        String op;
        int num;
        while(n -- > 0)
        {
            op = in.next();
            if (op.equals("push"))
            {
                num = in.nextInt();
                stack.push(num);  
            } 
            else if (op.equals("query")) System.out.println(stack.peek());
            else if (op.equals("pop")) stack.pop();
            else 
            {
                if (stack.size() == 0) System.out.println("YES");
                else System.out.println("NO");
            }
        }
    }
}
相关文章
|
11天前
|
算法 C语言
【数据结构与算法 经典例题】使用栈实现队列(图文详解)
【数据结构与算法 经典例题】使用栈实现队列(图文详解)
|
5天前
|
存储 缓存 算法
堆和栈的区别及应用场景
堆和栈的区别及应用场景
|
11天前
|
存储 测试技术
【数据结构】操作受限的线性表,栈的具体实现
【数据结构】操作受限的线性表,栈的具体实现
19 5
|
11天前
|
算法 C语言
【数据结构与算法 经典例题】使用队列实现栈(图文详解)
【数据结构与算法 经典例题】使用队列实现栈(图文详解)
|
12天前
|
算法
【C/数据结构和算法】:栈和队列
【C/数据结构和算法】:栈和队列
18 1
|
16天前
|
C++
【洛谷 P1044】[NOIP2003 普及组] 栈 题解(递归+记忆化搜索)
**NOIP2003普及组栈问题**:给定操作数序列1到n,仅允许push(进栈)和pop(出栈)操作。目标是计算所有可能的输出序列总数。输入包含一个整数n(1≤n≤18)。示例输入3,输出5。当队列空时返回1,栈空则只能入栈,栈非空时可入栈或出栈。AC C++代码利用记忆化搜索求解。
11 1
|
4天前
|
存储 缓存 算法
堆和栈的区别及应用场景
堆和栈的区别及应用场景
|
5天前
|
算法
数据结构与算法:栈与队列
数据结构与算法:栈与队列
|
8天前
|
存储 算法 调度
算法与数据结构-栈篇
算法与数据结构-栈篇
12 0
|
9天前
|
存储 人工智能 程序员
技术心得记录:堆(heap)与栈(stack)的区别
技术心得记录:堆(heap)与栈(stack)的区别