zoukankan      html  css  js  c++  java
  • 用两个栈实现队列


    用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。 队列中的元素为 int 类型。


    思路

    队列是先进先出的,而栈是后进先出的,如何用两个栈来实现队列的效果呢?

    我们假设只用 stack1 来存放元素,这样的话,直接 stack1.pop 是行不通的。每次要弹出元素时,将 stack1 的元素全部弹出,依次存放到 stack2 中,这样原本在 stack1 最底下的元素,就来到了 stack2 的顶部,使用 stack2.pop 就可以得到我们想要的结果。

    import java.util.Stack;
    public class Solution {
        
        Stack<Integer> stack1 = new Stack<Integer>();
        Stack<Integer> stack2 = new Stack<Integer>();
        
        public void push(int node) {
            stack1.push(node);
        }
        
        public int pop() {
            if(stack1.empty() & stack2.empty()) {
                throw new RuntimeException("Queue is empty");
            }
            if(stack2.empty()) {
                while(!stack1.empty()) {
                    stack2.push(stack1.pop());
                }
            }
            return stack2.pop();
        }
    }
    

    小结

    熟悉栈后进先出的特点,说不定在有些题目会派上大用场。用一种数据结构模拟另一种数据结构,要结合其特性去思考。


  • 相关阅读:
    C#中创建Android项目
    C#中创建Android项目
    在C#中获取当前屏幕的分辨率的方法
    数据库面试
    计算机网络面试
    linux面试
    Java使用递归检索文件个数
    二分查找
    富途证券面经(一面挂)
    Mysql
  • 原文地址:https://www.cnblogs.com/Yee-Q/p/13671256.html
Copyright © 2011-2022 走看看