栈是一种后进先出的LIFO原则的有序集合。
我们使用数组来保存栈里面的元素
创建Stack类
function Stack() {
//选择数组保存栈中的内容
let items = []; //添加一个或者几个元素到栈顶
this.push = function (element) {
items.push(element); };
//移除栈顶元素同时返回被移除的元素
//arrayObject.pop()方法用于删除并返回数组的最后一个元素。
this.pop = function () { return items.pop(); };
//判断栈是否为空
this.isEmpty = function () { return items.length === 0; }
//返回栈顶的元素且不对栈做任何修改
this.peek = function () { return items[items.length-1]; };
//返回栈的元素个数
this.size = function () { return items.length; };
//清空栈
//也可以多次调用pop方法进行清空
this.clear = function () { items = []; };
//打印栈
this.print = function () { console.log(items.toString()); };}
使用class将Stack函数转换成Stack类
class Stack {
constructor(){
this.items = [];
}
push(element){
this.items.push(element);
}
//移除栈顶元素同时返回被移除的元素
//arrayObject.pop()方法用于删除并返回数组的最后一个元素。
pop () {
return this.items.pop();
}
//判断栈是否为空
isEmpty () {
return this.items.length === 0;
}
//返回栈顶的元素且不对栈做任何修改
peek () {
return this.items[this.items.length-1];
}
//返回栈的元素个数
size () {
return this.items.length;
}
//清空栈
//也可以多次调用pop方法进行清空
clear () {
this.items = [];
}
//打印栈
print () {
console.log(this.items.toString());
}
}
使用Symbol实现类
let_items =Symbol();
class Stack {
constructor () {
this[_items] = []
}
//Stack方法
}
使用WeakMap实现
const items = new WeakMap();
class Stack{
constructor(){
items.set(this, []);
}
push(element){
let s = items.get(this);
s.push(element);
}
pop(){
let s = items.get(this);
let r = s.pop();
return r;
}
//其他方法
}
有兴趣可以加入Nodejs交流群,和大佬们一起成长!!!
群号:348108867
图片.png