varMyStack=function(){// 一个为主队列,一个为备份队列// 主队列的用于输入和输出,备份队列仅用于备份this.queue1 =[]this.queue2 =[]};MyStack.prototype.push=function(x){// 直接压入主队列this.queue1.push(x)};MyStack.prototype.pop=function(){// 如果需要再次pop元素,此时主队列中元素为空,所以需要将备份队列中的元素移到主队列中if(!this.queue1.length){[this.queue1,this.queue2]=[this.queue2,this.queue1]}// 把主队列的元素转移到备份队列,只留下一个元素while(this.queue1.length >1){// 从队头弹出,队尾插入this.queue2.push(this.queue1.shift())}// 主队列中的最后一个元素就是需要弹出的元素 returnthis.queue1.shift()};MyStack.prototype.top=function(){// 思想和pop类似,只是不需要删除元素let x =this.pop()// 把删除的元素再次压入栈顶元素,补上this.queue2.push(x)return x
};MyStack.prototype.empty=function(){if(!this.queue1.length &&!this.queue2.length){returntrue}else{returnfalse}};/**
* Your MyStack object will be instantiated and called as such:
* var obj = new MyStack()
* obj.push(x)
* var param_2 = obj.pop()
* var param_3 = obj.top()
* var param_4 = obj.empty()
*/