用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
var CQueue = function() {
this.arr1=[]
this.arr2=[]
};
/**
* @param {number} value
* @return {void}
*/
CQueue.prototype.appendTail = function(value) {
this.arr1.push(value)
};
/**
* @return {number}
*/
CQueue.prototype.deleteHead = function() {
/**
* 如果arr2中还有元素,需要把arr2中的先出栈
(在遇到arr1=[1,2],arr2=[3,4]这种情况时,
正常情况下使用队列出列时,应该出列4,
但是如果忽略下列这行代码,arr1会把尾部元素push到arr2中,
导致最终arr2.pop()的值是1)
*/
if(this.arr2.length) return this.arr2.pop()
//执行完上面操作,如果arr1中没有元素,证明arr1、arr2中都没有元素,返回-1
if(!this.arr1.length) return -1
//将arr1中的尾部元素移除并push到arr2中
while(this.arr1.length){
this.arr2.push(this.arr1.pop())
}
//移除并返回arr2的尾部元素
return this.arr2.pop()
};
/**
* Your CQueue object will be instantiated and called as such:
* var obj = new CQueue()
* obj.appendTail(value)
* var param_2 = obj.deleteHead()
*/