方法一 使用ArrayList进行模拟
import java.util.Scanner; import java.util.List; import java.util.ArrayList; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); List<Integer> list = new ArrayList<>(); int n = in.nextInt(); for (int i = 0; i < n; i++) { String str = in.next(); switch (str) { case "push": list.add(in.nextInt()); break; case "pop": if (list.isEmpty()) { System.out.println("Empty"); } else { list.remove(list.size() - 1); } break; case "query": if (list.isEmpty()) { System.out.println("Empty"); } else { System.out.println(list.get(list.size() - 1)); } break; case "size": System.out.println(list.size()); break; } } } }
方法二 使用ArrayDeque
java.util.ArrayDeque
(官方推荐,比 java.util.Stack
更高效)
import java.util.Scanner; import java.util.Deque; import java.util.ArrayDeque; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); Deque<Integer> stack=new ArrayDeque<>(); int n = in.nextInt(); for (int i = 0; i < n; i++) { String str = in.next(); switch (str) { case "push": stack.push(in.nextInt()); break; case "pop": if (stack.isEmpty()) { System.out.println("Empty"); } else { stack.pop(); } break; case "query": if (stack.isEmpty()) { System.out.println("Empty"); } else { System.out.println(stack.peek()); } break; case "size": System.out.println(stack.size()); break; } } } }