
题目分析
- 队列的特性是先进先出,栈的特性是先进后出。要用两个栈实现队列,我们需要维护一个插入栈和一个删除栈。当执行插入操作时直接向插入栈中插入数据,执行删除操作时我们先判断删除栈中有没有数据,如果有数据直接弹出当前栈顶元素,如果没有数据判断插入栈中有没有数据,如果插入栈中也没有数据,直接返回−1,否则将插入栈中的数据依次弹出插入到删除栈中,此时删除栈中的栈顶元素为最先插入的数据,弹出即可。
代码
var CQueue = function () {
this.appendSatck = [];
this.deleteSatck = [];
};
CQueue.prototype.appendTail = function (value) {
this.appendSatck.push(value);
};
CQueue.prototype.deleteHead = function () {
if (this.deleteSatck.length) {
return this.deleteSatck.pop();
}
if (!this.appendSatck.length) {
return -1;
}
while (this.appendSatck.length) {
this.deleteSatck.push(this.appendSatck.pop());
}
return this.deleteSatck.pop();
};