用两个栈实现队列


用两个栈实现队列

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTaildeleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )

4AwMAU.png

var CQueue = function() {
	this.stackA = [];   //创建栈
    this.stackB = [];   //创建栈
};

/** 
 * @param {number} value
 * @return {void}
 */
CQueue.prototype.appendTail = function(value) {
	this.stackA.push(value);    //将栈A设为入队栈
};

/**
 * @return {number}
 */
CQueue.prototype.deleteHead = function() {
	if(this.stackB.length){     //判断栈B是否为空栈
        return this.stackB.pop();    //将栈B的顶部移出(也就是A的入队元素移出)
    }else{
        while(this.stackA.length){
            this.stackB.push(this.stackA.pop());  //将A的栈顶元素推入栈底
        }
        if(!this.stackB.length){
            return -1;    //若B为空栈返回-1
        }else{
            return this.stackB.pop();  //返回B出栈元素
        }
    }
};

文章作者: Daniel Lin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Daniel Lin !
  目录