美文网首页
每日一题 [9]-用栈实现队列

每日一题 [9]-用栈实现队列

作者: MAXPUP | 来源:发表于2017-03-01 17:21 被阅读0次

题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
解:
队列:先进先出
栈:后进先出
首先定义栈:

function Stack(){
  var item = [];
  this.push = function(node){
    item.push(node);
    return item;
  }
  this.pop = function(){
    return item.pop();
  }
  this.isEmpty = function(){
    return item.length ===0;
  }
}

然后就是队列的方法,push只需要把值放入栈中就好

function push(node)
{
    stack1.push(node);
}

因为栈出的顺序和队列是相反的,所以需要先弹出放入另外一个栈中,这个栈pop的顺序就和队列一样了。

function pop()
{
    if(stack1.isEmpty() && stack2.isEmpty()){
        throw new Error("空队列");
    }
    if(stack2.isEmpty()){
        while(!stack1.isEmpty()){
            stack2.push(stack1.pop());
        }
    }
    return stack2.pop();
}

相关文章

  • 面试题9: 用两个栈实现队列

    9-1 用两个栈实现队列 9-2 用两个队列实现栈

  • 每日一题 [9]-用栈实现队列

    题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解:队列:先进先出栈:...

  • 数据结构——栈和队列

    用数组实现栈和队列 用栈实现队列 用队列实现栈 栈和队列的经典算法题最小间距栈宠物收养所 数组实现栈和队列 用数组...

  • 剑指offer之栈队列堆

    [TOC] 9. 用两个栈实现队列 用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。 mysolu...

  • leecode刷题(26)-- 用栈实现队列

    leecode刷题(26)-- 用栈实现队列 用栈实现队列 使用栈实现队列的下列操作: push(x) -- 将一...

  • 两个栈实现一个队列

    《剑指offer》面试题9:两个栈实现队列 题目:用2个栈实现一个队列,完成队列的push和pop操作 思路:栈1...

  • C语言第七次作业:链表

    707. 设计链表 空指针 空节点 225. 用队列实现栈 链式存储栈 双队列实现栈 232. 用栈实现队列 链式...

  • 剑指offer第二版-9.用两个栈实现队列

    本系列导航:剑指offer(第二版)java实现导航帖 面试题9:用两个栈实现队列 题目要求:用两个栈,实现队列的...

  • 队列之-队列实现栈

    一、队列实现栈核心算法概述 之前已经描述过了用栈实现队列的功能,见栈系列之-实现队列,那么同样队列也可以用来实现栈...

  • 38_两个有趣的问题

    关键词:通过栈实现队列、通过队列实现栈 0. 通过栈实现队列 用栈实现队列等价于用后进先出的特性实现先进先出的特性...

网友评论

      本文标题:每日一题 [9]-用栈实现队列

      本文链接:https://www.haomeiwen.com/subject/nzhxgttx.html