Bootstrap

蓝桥杯学习-11栈

11栈

先进后出

例题–蓝桥19877

用数组来设置栈

1.向栈顶插入元素--top位置标记元素
2.删除栈顶元素--top指针减减
3.输出栈顶元素--输出top位置元素

使用arraylist

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        ArrayList<Integer> array=new ArrayList<>();
        int m=sc.nextInt();
        for (int i = 0; i < m; i++){
            String str=sc.next();
            switch (str){
                case "push":
                    int x=sc.nextInt();
                    array.add(x);
                    break;
                case "pop":
                    if (array.size()==0){
                        break;
                    }else {
                        array.remove(array.size()-1);
                    }
                    break;
                case "empty":
                    if (array.size()==0){
                        System.out.println("YES");
                    }else {
                        System.out.println("NO");
                    }
                    break;
                case "query":
                    if (array.size()==0){
                        System.out.println("empty");
                    }else {
                        System.out.println(array.get(array.size()-1));
                    }
                    break;
                default:
                    System.out.println("error");
                    }
            }
        }
    }

使用数组

import java.io.*;
import java.util.*;
import java.math.BigInteger;

public class Main {
    static int N = (int)(1e5+10);
    static int[] stk = new int[N];
    static int top = 0;

    static void push(int x) {
        stk[++top] = x;
    }

    static void pop() {
        if(isEmpty()) return;
        top--;
    }

    static boolean isEmpty() {
        return top==0;
    }

    static void query() {
        if(isEmpty()) out.println("empty");
        else out.println(stk[top]);
    }

    static void solve() {
        int m = in.nextInt();
        while(m-->0) {
            String op = in.next();
            if(op.equals("push")) {
                int x = in.nextInt();
                push(x);
            }else if(op.equals("pop")) {
                pop();
            }else if(op.equals("empty")) {
                out.println(isEmpty()?"YES":"NO");
            }else {
                query();
            }
        }
    }

    public static void main(String[] args) {
        solve();
        out.flush();
    }

    static FastReader in = new FastReader();
    static PrintWriter out = new PrintWriter(System.out);

    static class FastReader {
        static BufferedReader br;
        static StringTokenizer st;

        FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            String str = "";
            while(st==null||!st.hasMoreElements()) {
                try {
                    str = br.readLine();
                }catch(IOException e) {
                    throw new RuntimeException(e);
                }
                st = new StringTokenizer(str);
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }
    }
}
;