1、栈
栈是一种后进先出的数据结构(Last-In-First-Out, LIFO),也就是最近添加的项先被删除。数据项的推入(插入,push方法)和弹出(删除,pop方法)只在栈顶发生。
JS中数组提供了push()和pop()方法,来实现类似栈的行为。
class Stack {
data = [];
add = (v) => {
this.data.push(v)
}
get = () => {
return this.data.pop();
}
getStackData = () => {
return this.data;
}
}
const stack = new Stack();
stack.add('v1');
console.log(stack.getStackData()); // [ 'v1' ]
stack.add('v2');
console.log(stack.getStackData()); // [ 'v1', 'v2' ]
console.log(stack.get()); // v2
console.log(stack.getStackData()); // [ 'v1' ]
2、队列
队列是一种先进先出的数据结构(First-In-First-Out,FIFO),队列在列表末尾添加数据,但从列表开头获取数据。push()已经提供了在末尾添加数据的方法,那么只需要利用shift()方法在列表开头获取数据即可实现队列形式。
class Queue {
data = [];
add = (v) => {
this.data.push(v)
}
get = () => {
return this.data.shift();
}
getStackData = () => {
return this.data;
}
}
const queue = new Queue();
queue.add('v1');
console.log(queue.getStackData()); // [ 'v1' ]
queue.add('v2');
console.log(queue.getStackData()); // [ 'v1', 'v2' ]
console.log(queue.get()); // v1
console.log(queue.getStackData()); // [ 'v2' ]
参考资料:《JavaScript权威指南》