232.用栈实现队列
代码
var MyQueue = function() {
this.stackIn = [];
this.stackOut = [];
};
// 队列末尾增加元素
MyQueue.prototype.push = function(x) {
// 数组的方法
this.stackIn.push(x);
};
// 移除头部并返回
MyQueue.prototype.pop = function() {
const size = this.stackOut.length;
if(size){
// 数组的pop 剪切最后一个元素。最晚入栈的
return this.stackOut.pop();
}
while(this.stackIn.length){
// 将stackIn的最后一个依次放到stackOut里面
this.stackOut.push(this.stackIn.pop());
}
// 移除stackOut的最后一个,也就是stackIn的第一个 先进先出
return this.stackOut.pop();
};
// 返回开头元素
MyQueue.prototype.peek = function() {
// x是最前面的元素
const x = this.pop();
this.stackOut.push(x);
return x;
};
// 是否为空
MyQueue.prototype.empty = function() {
return ! this.stackIn.length && !this.stackOut.length;
};
225. 用队列实现栈
代码
var MyStack = function() {
this.queue1 = [];
this.queue2 = [];
};
MyStack.prototype.push = function(x) {
this.queue1.push(x);
};
MyStack.prototype.pop = function() {
if(!this.queue1.length){
[this.queue1,this.queue2] = [this.queue2,this.queue1];
}
while(this.queue1.length>1){
this.queue2.push(this.queue1.shift());
}
return this.queue1.shift();
};
MyStack.prototype.top = function() {
const x = this.pop();
this.queue1.push(x);
return x;
};
MyStack.prototype.empty = function() {
return !this.queue1.length && !this.queue2.length;
};
var MyStack = function() {
this.queue = [];
};
// 放入栈顶,先进后出
MyStack.prototype.push = function(x) {
this.queue.push(x);
};
// 弹出最后放进去的元素
MyStack.prototype.pop = function() {
let size = this.queue.length;
while(size-->1){
this.queue.push(this.queue.shift());
}
return this.queue.shift();
};
MyStack.prototype.top = function() {
const x = this.pop();
this.queue.push(x);
return x;
};
MyStack.prototype.empty = function() {
return !this.queue.length;
};