Material utilizado nas aulas de Estruturas de Dados do curso superior de Tecnologia em Sistemas para Internet da Faculdade de Tecnologia de Taquaritinga, para apoiar a explicação do conceito de Pilha (Stack), com exemplos e implementação prática utilizando JavaScript (com classes do ECMAScript 2015).
3. Estruturas
› Dados arranjados em
uma sequência linear
› Itens podem ser percorridos do início ao fim
com uma única repetição
› Normalmente chamamos um
item de nó (ou node, em inglês)
4. Estruturas
› Cada item precisa de uma
identificação de localização
› Diversas estruturas seguem uma lógica sequencial,
onde um item sabe dizer qual é o próximo item
› Algumas estruturas também necessitam que
cada item saiba dizer qual o item anterior
5. Estruturas
Valor
(value)
Node
Próximo
(next)
› Cada nó é uma estrutura
personalizada, com o valor
armazenado e a referência
do objeto seguinte
Valor
(value)
Node
Próximo
(next)
Valor
(value)
Node
Próximo
(next)
null
› Se não existir próximo,
aponta-se para nulo
6. class Node {
constructor (value) {
this.value = value
this.next = null
}
}
JavaScript
Estrutura de um Nó
7. › Seguem a lógica abstrata de pilhas de objetos
› O último item a entrar é o primeiro a sair
Last In, First Out (LIFO)
10. push (value) {
this.length++
let newNode = new Node(value)
newNode.next = this.top
this.top = newNode
}
JavaScript
Inserir Nó na Pilha
11. pop () {
if (this.length === 0) return null
this.length--
let removedNode = this.top
this.top = removedNode.next
return removedNode.value
}
JavaScript
Remover Nó da Pilha
12. quando usar?
› Inversão de textos
› Verificação de palíndromos
› Ordenação inversa de itens
› Checagens sintáticas
› Call Stack: as linguagens de programação utilizam pilhas
internamente para controlar a ordem da execução de
códigos com desvios (funções, métodos)
13. quando usar?
› Call Stack: quando uma função termina de executar, é
removida da pilha de chamadas (pop) e a função que
estava esperando se torna o topo da execução (top)
14. import Stack from './Stack'
let books = new Stack()
// Inserindo alguns livros
books.push('Game of Thrones')
books.push('Fifty Shades of Grey')
books.push('The Secret')
// Repetindo enquanto houver livros
while (books.length) {
let book = books.pop() // Remove o livro
console.log(book) // Escreve o nome dele
}
JavaScript
Utilização
> The Secret
> Fifty Shades of Grey
> Game of Thrones