[栈与队列]常见用法与解题思路


1.栈的基本操作

  • 创建栈:
    Stack stack = new Stack<>();
    //或者用双端队列好一点
    Deque stack = new LinkedList();
    Deque stack = new ArrayList();
  • 入栈(push):
    stack.push(1);
    stack.push(2);
    stack.push(3);
  • 出栈(pop):
    int topElement = stack.pop(); // 返回并移除栈顶元素
  • 查看栈顶元素(peek):
    int topElement = stack.peek(); // 返回栈顶元素但不移除
  • 检查栈是否为空:
    boolean isEmpty = stack.isEmpty();
  • 获取栈的大小:
    int size = stack.size();

2.双端队列的基本操作

  • 创建一个空的 Deque
    Deque deque = new ArrayDeque<>();

  • 插入元素
    deque.addFirst(1); // 头部插入 1
    deque.addLast(2); // 尾部插入 2
    deque.push(3); // 头部插入 3
    deque.offer(4); // 尾部插入 4

  • 查看元素
    System.out.println("头部元素: " + deque.peekFirst()); // 输出 3
    System.out.println("尾部元素: " + deque.peekLast()); // 输出 4

  • 删除元素
    System.out.println("移除头部元素: " + deque.pollFirst()); // 输出 3
    System.out.println("移除尾部元素: " + deque.pollLast()); // 输出 4

  • 遍历元素
    System.out.println("当前队列元素: ");
    for (Integer element : deque) {
    System.out.println(element);
    }