Escolar Documentos
Profissional Documentos
Cultura Documentos
Computação
Estruturas de dados
Pilhas (stacks)
alexandre.perin@ifsc.edu.br
Lages (SC).
Pilhas
• Sumário
o Introdução
o Definição
o Operações
o Funcionamento
o Implementação
o Exercícios
2
Pilhas
• Introdução
o É uma estrutura de dados linear, utilizada em diversos
problemas:
▪ Operações para refazer ou desfazer operações aplicações
(editor de texto)
▪ ...
3
Pilhas
• Definição
o Uma pilha ou stack é uma estrutura de dados linear, cujo
acesso se dá através de uma regra
▪ Último que entra é o primeiro que sai: Last In First Out
(LIFO)
▪ Exemplo:
• Todo livro a ser colocado na pilha vai no topo
• Só é possível retirar um livro do topo.
Pilha de livros 4
Pilhas
o Operações
• Há duas principais
o Push( elemento ): empilha um elemento e atualiza o topo
• Há outras complementares
o Número de elementos presentes na pilha
o Limpar a pilha
o ...
5
Pilhas
o Funcionamento
• Ex.: push(30)
Topo 30
Topo 10
10
44
30 44
push(30)
Antes Depois
6
Pilhas
o Funcionamento
• Ex.: pop( )
Topo 30
10
Topo 10
44
44
Antes Depois
7
Pilha
o Exemplo de funcionamento de uma pilha implementada
através de alocação estática de memória (vetor)
• Link:
https://www.cs.usfca.edu/~galles/visualization/StackArray.html
8
Pilhas
o Exemplo de funcionamento de uma pilha implementada
através de alocação dinâmica de memória (lista ligada)
• Link:
https://www.cs.usfca.edu/~galles/visualization/StackLL.html
9
Pilhas
o Implementação
• Há duas maneiras:
o Através de memória estática (vetor)
▪ É importante observar e controlar os limites da pilha
(vetor), de maneira a evitar acessos a posições de
memória não alocadas.
10
Pilhas
o As pilhas serão implementadas através de alocação
dinâmica de memória
• Para atender à regra LIFO, as operações de push e pop
devem ser realizadas na mesma extremidade da estrutura, ou
no início ou no final
• A implementação das operações de push e pop deve possuir
eficiência computacional igual a O(1)
11
Pilhas
o Push e Pop em pseudocódigo
// considere que as operação de push e pop serão realizadas no início
Método push(Nodo novoNodo)
Início
Se pilha está vazia Então
pilha <- novoNodo
Senão
novoNodo.próximo <- pilha
pilha <- novoNodo
Fimse
Fim
Topo 20
Topo 10 10
A A