栈数据结构
date
Mar 12, 2023
slug
js-stack
status
Published
tags
JavaScript数据结构与算法
stack
JavaScript
summary
JavaScript Stack init with array
type
Post
创建一个基于数组的栈
class Stack{
    constructor(){
        this.items = [];
    }
}push(element): 添加一个新元素到栈顶
pop(): 移除栈顶的元素,同时返回被移除的元素
peek(): 返回栈顶的元素,不对栈做任何修改
isEmpty(): 如果栈里面没有任何元素就返回 true,否则返回 false
clear(): 移除栈里的所有元素
size(): 返回栈里的元素个数
向栈添加元素
只添加元素到栈顶
push(element){
    this.items.push(element);
}从栈移除元素
移除最后添加的元素
pop(){
    return this.items.pop();
}查看栈顶元素
peek(){
    return this.items[this.items.length - 1];
}类的内部使用数组保存元素,访问数组的最后一个元素可以用 length - 1

 上图为包含三个元素的栈,内部数组的长度为3。数组中最后一项的位置为2(length - 1)
检查栈是否为空
isEmpty(){
    return this.items.length === 0;
}清空栈元素
clear(){
    this.items = [];
}使用Stack类
首先需要初始化 Stack 类,然 后验证一下栈是否为空(输出是 true,因为还没有往栈里添加元素)。
const stack = new Stack(); 
console.log(stack.isEmpty()); // 输出为 true接下来,往栈里添加一些元素
stack.push(5); 
stack.push(8);如果调用 peek 方法,将输出 8,因为它是往栈里添加的最后一个元素。
console.log(stack.peek()); // 输出 8再添加一个元素。
stack.push(11); 
console.log(stack.size()); // 输出 3 
console.log(stack.isEmpty()); // 输出 false
tack.push(15);
调用两次 pop 方法从栈里移除两个元素。
stack.pop(); 
stack.pop(); 
console.log(stack.size()); // 输出 2