- 其实,这里考察的就是队列的知识,用两个栈(先进后出) 实现队列(先进先出)的数据结构。
- 例如,把数组[5,6,7,8]通过outStack.push(inStack.pop()),这条代码,变成[8,7,6,5],实现删除
var CQueue = function() {
//定义两个栈,一个插入数据,一个删除数据
//intStack 不为空:弹出元素
//outStack 为空:将 inStack 元素依次弹出,放入到 outStack 中(在数据转移过程中,顺序已经从后入先出变成了先入先出)
this.inStack=[]
this.outStack=[]
};
/**
* @param {number} value
* @return {void}
*/
CQueue.prototype.appendTail = function(value) {
this.inStack.push(value) //插入数据进去栈里面
};
/**
* @return {number}
*/
CQueue.prototype.deleteHead = function() {
const{inStack,outStack}=this;
if(outStack.length){
//outStach不为空,删除数据
return outStack.pop()
}else{
// 这里进行队列数据格式转换
while(inStack.length){
//inStack不为空, 弹出元素
outStack.push(inStack.pop())
}
return outStack.pop()||-1
}