两个栈实现队列,所以只能用push
和pop
方法。
使用A
来进行添加的操作,使用B
来进行辅助
- 添加元素时,将元素
push
进A
- 删除元素时,先看
B
中是否有值,若有值,直接pop
并返回 - 若
B
中无值,将A
中元素全部pop
出,并push
进B
B
在pop
出一个元素即可,若B
中无元素,返回-1
这样才能满足最先push
进A
的元素,在B
的最顶层,所以先从B
中pop
出,满足先入先出特性。
class CQueue {
constructor() {
this.stackA = [];
this.stackB = [];
}
appendTail(value) {
this.stackA.push(value);
}
deleteHead() {
if (this.stackB.length) {
return this.stackB.pop();
} else {
while (this.stackA.length) {
this.stackB.push(this.stackA.pop());
}
if (!this.stackB.length) {
return -1;
} else {
return this.stackB.pop();
}
}
}
}