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

    分析:栈是先进后出,队列是先进先出,所以我们要借助一个栈来反转元素的顺序。比如两个栈,pushStack和popStack,当队列添加元素时都用pushStack存放,当队列移除元素时用popStack弹出的元素,popStack栈的作用就是反转pushStack栈中元素的顺序。

    步骤:当队列用add方法添加元素时都存入pushStack中,当队列用poll(poll方法移除元素,当队列为空则返回null)方法移除元素时,先判断popStack是否为空,如果popStack为空则接着判断pushStack是否为空,如果pushStack也为空则表明此时两个栈都没有元素,队列返回为空,如果pushStack中有元素则将pushStack中的所有元素依次弹出并添加到popStack栈中,最后将popStack的栈顶元素弹出即实现了队列的移除元素的方法。

    附上Java代码实现:

    public class DoubleStackQueue{
        Stack<Integer> pushStack=new Stack<>();//存放队列添加的元素
        Stack<Integer> popStack=new Stack<>();//当元素出队列时,先将pushStack里的元素添加到popStack中以反转元素在栈中的顺序
        public void add(Integer num){
            pushStack.push(num);
        }
        public Integer remove(){
            if(!popStack.empty()){
                return popStack.pop();
            }else{
                if(pushStack.isEmpty()){
                    return null;
                }else{
                    while (!pushStack.isEmpty()){
                        popStack.push(pushStack.pop());
                    }
                }
            }
            return popStack.pop();
        }
    }
  • 相关阅读:
    AJAX 跨域请求与 JSONP详解
    深入理解PHP的mvc框架
    读文文件md5值
    快速排序
    编写简单GUI程序
    简单的加减法
    rallway.py
    用列表构建栈结构
    模拟用户登陆注册
    密码生成
  • 原文地址:https://www.cnblogs.com/quxiangxiangtiange/p/10128905.html
Copyright © 2011-2022 走看看