JavaScript数据结构-栈

栈是一种后进先出的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

你可能感兴趣的:(JavaScript数据结构-栈)