题解 | #由两个栈组成的队列#

由两个栈组成的队列

https://www.nowcoder.com/practice/6bc058b32ee54a5fa18c62f29bae9863

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {

    //第一个栈正常add数据
    static Stack<Integer> stack1 = new Stack<>();
    //需要peek()或pop()时,把栈1 倒入 栈2
    static Stack<Integer> stack2 = new Stack<>();
    static Scanner in = new Scanner(System.in);

    public static void main(String[] args) {

        int N = in.nextInt();
        for (int i = 0; i < N; i++) {
            String str = in.next();
            switch (str) {
                case "add":
                    add();
                    break;
                case "peek":
                    peek();
                    break;
                case "poll":
                    poll();
                    break;
                default:
                    break;
            }
        }
    }

    private static void add() {
        stack1.add(in.nextInt());
    }

    private static void peek() {
        while (!stack1.isEmpty()) {
            stack2.add(stack1.pop());
        }
        System.out.println(stack2.peek());
        while (!stack2.isEmpty()) {
            stack1.add(stack2.pop());
        }
    }

    private static void poll() {
        while (!stack1.isEmpty()) {
            stack2.add(stack1.pop());
        }
        stack2.pop();
        while (!stack2.isEmpty()) {
            stack1.add(stack2.pop());
        }
    }
}

栈和队列,记录栈和队列的一些题

全部评论

相关推荐

11-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务