用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
分析
队列特性:先进先出
栈:先进后出
js中我们用数组实现栈,单个数组 压栈push(),出栈pop(),
js中同样用数组实现队列,入队 push(),出队shift(),如果用两个栈(数组)则我们只需要将另外一个数组reverse()
代码
- 两个数组实现
let stackA = [];
let stackB = [];
function push(node) {
// write code here
let succ = false;
if (typeof node === 'number') {
stackA.push(node);
succ = true;
} else {
succ = false;
}
return succ;
}
function pop() {
// write code here
let cur = null;
if (stackB.length > 0) {
cur = stackB.pop();
} else {
if (stackA.length > 0) {
/* stackA.forEach(item=>{
stackB = stackA.reverce();
})*/
stackB = stackA.reverse();
stackA = [];
cur = stackB.pop();
}
}
return cur
}
2.一个数组实现
let stackA = [];
function push(node) {
// write code here
let succ = false;
if (typeof node === 'number') {
stackA.push(node);
succ = true;
} else {
succ = false;
}
return succ;
}
function pop() {
// write code here
let cur = null;
if (stackA.length > 0) {
cur = stackA.shift();
}
return cur
}
总结
js中实现栈和队列数据结构最主要是对数组的几个操作方法应用
pop 尾部删除,返回删除元素数组长度减一
push 尾部添加,数组长度加一
shift 头部删除,返回删除元素,长度减一
unshift 头部添加,长度加一
reverse 数组内容顺序反转