Referência para entender Pilhas com JavaScript
E aí galera do TabNews, tudo bem com vocês? Meu nome é Edgar e sou estudante de Engenharia de Software e atualmente tenho como objetivo me especializar em JavaScript. Além deste objetivo, um dos meus desejos para 2024 é relatar de forma clara e simplificada algumas das coisas que venho aprendendo, através de publicações aqui mesmo no TabNews para discussão e aprendizagem, e em posts no LinkedIn e Medium. Eu agradeceria imensamente se após a leitura desta pequena publicação vocês me dessem o feedback de vocês, sobre o que acharam do texto. Esse é meu primeiro "pequeno artigo", agradeceria se lessem com carinho.
O que é a Estrutura de Dados Pilha?
A Estrutura de Dados Pilha (Stack) apresenta algumas semelhanças com os Arrays, porém, ela nos oferece mais controle sobre a adição e remoção dos elementos.
Uma pilha é uma coleção ordenada de itens que obedece ao princípio LIFO (Last In, First Out), em tradução livre, o último a entrar é o primeiro a sair. Ou seja, os elementos não podem ser adicionados ou removidos fora de ordem, o último elemento adicionado é sempre o primeiro a ser removido. Imagine uma pilha de livros, para compreender melhor.
Criando e Manipulando uma Pilha usando Arrays
Segue abaixo nossa classe construtora e os métodos disponíveis em uma pilha.
class Pilha {
constructor() {
this.itens = []
}
}
Método push()
O método push()
é responsável pela adição de um ou mais elementos no topo da pilha.
push(elemento) {
this.itens.push(elemento)
}
Método pop()
O método pop()
remove e devolve o elemento que está no topo da pilha.
pop() {
return this.itens.pop()
}
Método peek()
O método peek()
devolve como informação o elemento que está no topo da pilha.
peek() {
return this.itens[this.itens.length - 1]
}
Método isEmpty()
O método isEmpty()
é responsável por retornar true
se a pilha estiver vazia e false
caso o tamanho da pilha seja maior que 0.
isEmpty() {
return this.itens.length === 0
}
Método size()
O método size()
devolve o número de elementos contidos na pilha.
size() {
return this.itens.length
}
Método clear()
O método clear()
é responsável pela remoção de todos os elementos da pilha.
clear() {
this.itens = []
}
Exemplo Prático de uma Pilha em JavaScript usando Arrays
Conhecendo nossa classe construtora e os métodos disponíveis em uma Pilha (Stack), a classe Pilha
foi construída da seguinte maneira:
class Pilha {
constructor() {
this.itens = []
}
push(elemento) {
this.itens.push(elemento)
}
pop() {
return this.itens.pop()
}
peek() {
return this.itens[this.itens.length - 1]
}
isEmpty() {
return this.itens.length === 0
}
size() {
return this.itens.length
}
clear() {
this.itens = []
}
}
Com o objetivo de exemplificar a utilização da classe Pilha
, vamos criar uma instância desta classe:
const pilha = new Pilha()
Vamos trabalhar com a adição de números na pilha utilizando o método push()
:
pilha.push(1)
pilha.push(2)
pilha.push(3)
Perceba que o último elemento adicionado a pilha foi o número 3, e já sabemos que uma Pilha obedece ao princípio Last in, First Out. Logo, se utilizarmos agora o método pop()
iremos remover e retornar o número 3:
console.log(pilha.pop()) // exibe 3
Então, se utilizarmos o método peek()
com o objetivo de veriricar o último elemento da pilha, vamos obter o número 2 como resultado:
console.log(pilha.peek()) // exibe 2
Sabendo que há ao menos um elemento na pilha, se utilizarmos o método isEmpty()
vamos receber como retorno false
:
console.log(pilha.isEmpty()) // exibe false
Agora, vamos verificar o número de elementos na pilha utilizando o método size()
:
console.log(pilha.size()) // exibe 2
O último elemento a ser exemplificado é o clear()
, vamos usar este método e verificar com o método isEmpty()
se a pilha realmente está vazia:
pilha.clear()
console.log(pilha.isEmpty()) // exibe true