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

题目描述
用两个栈来实现一个队列,完成队列的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();
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 栈 栈的英文单词是Stack,它代表一种特殊的线性表,这种线性表只能在固定一端(通常认为是线性表的尾端)进行插入,...
    Jack921阅读 1,568评论 0 5
  • 1.栈 1.1.栈的定义 栈(stack)是限定仅在表尾(栈顶 top)进行插入和删除操作的后进先出的线性表。 p...
    JonyFang阅读 1,438评论 0 21
  • 一、栈 1.1 栈的实现 栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。java没有栈这样的数据结...
    yjaal阅读 1,477评论 0 1
  • 栈 栈: 限定仅在表尾进行插入和删除操作的线性表; 后进先出(LIFO)。 在表尾进行操作,表尾是栈顶;最新进栈的...
    IAM四十二阅读 951评论 0 2
  • 五百年前 她素衣白纱 你流连忘返 说好了 海角天涯一起流浪 五百年后 她望断天涯 你忘记誓言 单相思 路再长她只身...
    安静的复苏918阅读 216评论 0 2