BRParola
8/22/2019 - 2:25 AM

stacks

/*
    Uma pilha obedece o princípio LIFO (Last in First Out) 
    que significa "O último a entrar é o primeiro a sair"

    Uma `pilha` de livros, ou uma `pilha` de bandejas são bons 
    exemplos desse tipo de estrutura. Os elementos do topo são
    os que saem na frente. 
*/

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

    push(...elements) {
        elements.forEach(element => this.items.push(element));
    }

    pop() {
        return this.items.pop(); 
    }

    peek() {
        return this.items.slice(-1); 
    }

    isEmpty() {
        return this.items.length === 0; // Que forma mais bonita hahaha
    }

    clear () {
        this.items = []; 
    }

    size() {
        return this.items.length; 
    }
}

const stack = new Stack();

stack.push(1); 
stack.push(3); 
stack.push(7);
stack.pop(); 
stack.clear(); 

console.log(stack.isEmpty());