乐趣区

关于css3:JS栈结构的简单封装

栈:是一种遵循后进先出 (Last In First Out / LIFO) 准则的一种有序汇合。

新增加或者要删除的元素都会保留在栈的同一端,咱们把它叫做栈顶,另外一端叫做栈底。

在栈中所有的新元素都靠近栈顶,而所有的旧元素都靠近栈底。

1

在咱们的生存中也有很多相似于栈这种构造的例子:

咱们将栈视作是一个容器,比方水杯。它只有一个入口和进口就是杯子的顶部 (和咱们的栈十分类似)。咱们向杯子中放入 5 块同杯子直径大小的饼干,全副放入后咱们开始取出饼干。大家会发现 你最先取出的饼干是最初放入的那块, 正好也就合乎了咱们栈的特点 (LIFO)

在编程世界中栈也被用来保留变量、办法调用等性能,也被用于浏览器的游戏历史记录 (比方浏览器的返回按钮)。

那么上面咱们就应用 JavaScript 的类来创立一个咱们的栈。

class Stack{

constructor(){

this.items = [];

}

}

咱们须要一种形式来保留咱们栈中的数据,从下面的代码能够看到,我这边抉择的是数组。然而数组容许咱们在任何地位增加或者删除元素,咱们须要给元素增加和删除的地位有一个束缚,让咱们的数组可能遵循 后进先出 (LIFO) 的准则。所以接下来须要给咱们的栈再增加一些办法。

// 咱们要实现的第一个性能是向栈中增加新元素

// 并且增加的新元素只能放再栈的顶部 (也就是数组的尾部)

push(element) {

this.items.push(element);

}

// 应为数组的 push 办法也是将新元素增加到数组的尾部,所以应用数组 push 办法来实现

// 当初咱们来为栈增加一个移除元素的办法

// 栈构造是遵循 LIFO 的准则,素以移除的元素是最初增加进去的元素

pop() {

return this.items.pop();

}

// 咱们应用数组的 push 和 pop 两个函数就能够实现了在 www.sangpi.com 之后进先出的准则 // 持续为栈增加一些辅助性能 // peek 办法用于查看栈顶的元素

peek() {

return this.items[this.items.length – 1];

}

// isEmpty 办法用于查看栈是否为空

isEmpty() {

return !this.items.length;

}

// clear 办法用于清空栈

clear() {

this.items = [];

}

// size 办法用于查看栈中元素的数量

size() {

return this.items.length;

}

以上代码就曾经实现了咱们栈的性能。接下来咱们把它整顿到一起来看一下。

class Stack {

constructor() {

this.items = [];

}

push(element) {

this.items.push(element);

}

pop() {

return this.items.pop();

}

peek() {

return this.items[this.items.length – 1];

}

isEmpty() {

return !this.items.length;

}

clear() {

this.items = [];

}

size() {

return this.items.length;

}

}

接下来就能够应用咱们的 Stack 了

// 咱们先来创立一个栈验证一下是否为空

const stack = new Stack(); // 新建一个栈

console.log(stack.isEmpty()); // true

// 持续向栈中增加 2 个元素

stack.push(‘hello’);

stack.push(‘world’);

// 此时咱们调用 peek 办法查看栈顶的元素

console.log(stack.peek()); // ‘world’

// 调用 size 办法查看一下元素的数量

console.log(stack.size()) // 2

// 持续向栈中增加元素

stack.push(‘.’);

stack.push(‘JavaScript’);

// 移出一个元素

console.log(stack.pop()); // ‘JavaScript’

// 清空栈

stack.clear();

console.log(stack.size()); // 0

console.log(stack.isEmpty()); // true

最初,还有一些业余词汇心愿大家可能把握:

向栈中增加元素:咱们能够称其为 入栈、压栈、压入

从栈中移除元素: 咱们能够称其为 出栈、弹出

心愿以上的分享能帮到大家。

退出移动版