学习JavaScript数据结构与算法(第3版)阅读笔记---第4章

4.2 栈数据结构

栈是一种遵从后进先出(LIFO)原则的有序集合。新添加或待删除的元素都保存在栈的同 一端,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。
栈的使用场景:在编程语言的编译器和内存中保存变量、方法调用等,也被用于浏览器历史记录 (浏览器的返回按钮)。

4.2.1 创建一个基于数组的栈

创建一个类来表示栈。从创建一个 stack-array.js 文件并声明 Stack 类开始。

class Stack { 
    constructor() { 
    this.items = []; // {1} 
    } 
}

选择数组(行{1})来保存栈里的元素。由于栈遵循 LIFO 原则,需要对元素的插入和删除功能进行限制。接下来, 要为栈声明一些方法。
push(element(s)):添加一个(或几个)新元素到栈顶。
pop():移除栈顶的元素,同时返回被移除的元素。
peek():返回栈顶的元素,不对栈做任何修改(该方法不会移除栈顶的元素,仅仅返回它)。
isEmpty():如果栈里没有任何元素就返回 true,否则返回 false。
clear():移除栈里的所有元素。
size():返回栈里的元素个数。该方法和数组的 length 属性很类似。

4.2.2 向栈添加元素

push方法负责往栈里添加新元素,有一点很重要:该方法只添加元素到栈顶,也就是栈的末尾。

push(element) { 
    this.items.push(element); 
}
4.2.3 从栈移除元素

pop 方法主要用来移除栈里的元素。栈遵从 LIFO 原则,因此移 出的是最后添加进去的元素。

pop() { 
    return this.items.pop(); 
}
4.2.4 查看栈顶元素

peek 方法将返回栈顶的元素(栈里最后添加的元素)。

peek() { 
    return this.items[this.items.length - 1]; 
}

4.2.5 检查栈是否为空

isEmpty方法如果栈为空的话将返回 true,否则就返回 false。

isEmpty() { 
    return this.items.length === 0; 
}

猜你喜欢

转载自www.cnblogs.com/donokamark/p/12687919.html