SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
Pilhas e Filas
Prof. Francisco Glaubos
Deptº. de Informática, UFMA
francisco.glaubos@ufma.br
Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Pilhas
● Coleção de elementos que segue o princípio last-in
first-out (LIFO)
○ Último a entrar, primeiro a sair
● Operações fundamentais: Insere e Remove
○ “inserir” e “remover”
○ Ambas são O(1)
● O termo “Pilha” é uma metáfora para pilha de livros
2
Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Exemplos de utilização
● Navegadores de Internet e sites visitados
recentemente
● Editores de texto e o mecanismo “desfazer”
3
UFMA / Estrutura de dados
Exemplo de
operações
em uma
pilha
4
Operação Valor de
retorno
Conteúdo da
Pilha
S.Insere(5) - [5]
S.Insere(3) - [5, 3]
tam(S) 2 [5, 3]
S.vazia() False [5, 3]
S.topo() 3 [5, 3]
S.Remove() 3 [5]
S.Remove() 5 []
S.Remove() “erro” []
Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
O tipo abstrato de dados (TAD) Pilha
● Uma das mais simples Estruturas de dados (ED), e entre as mais importantes.
● Uma pilha é um tipo de dado abstrato, tal que uma instância sua S suporta os seguintes
métodos:
○ S.Insere (e): adiciona o elemento ‘e’ ao topo da pilha S
○ S.Remove (): Remove e retorna o elemento superior da pilha S
■ um erro ocorre se a pilha estiver vazia
5
Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
O tipo abstrato de dados (TAD) Pilha
● Métodos de acesso:
○ S.topo(): retorna uma referência ao elemento do topo da pilha S
■ um erro ocorre se a pilha estiver vazia
○ S.vazia(): Retorna True se a pilha S não possuir nenhum elemento; False, caso
contrário.
○ tam(S): retorna o número de elementos da pilha S
● Uma pilha recém-criada está vazia
● Pilha sem limite na capacidade
● Elemento da pilha podem ser de tipos variados
6
Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Implementação baseada em Python List
● O python não tem um tipo abstrato Pilha
● Podemos implementar uma pilha utilizando uma lista de Python
○ método append(.)
○ método pop()
○ topo da pilha no final da lista
7
Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Implementação baseada em Python List
8
Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Implementação baseada em Python List
9
Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Exemplo de execução
10
Prof. Francisco Glaubos UFMA / Estrutura de dados
Filas
● É uma estrutura de dados “prima” da Pilha
● Segue o princípio first-in, first-out (FIFO)
○ somente o elemento que está na fila por mais tempo, pode ser
removido.
● Metáfora para fila de pessoas
11
Prof. Francisco Glaubos UFMA / Estrutura de dados
Exemplos de utilização
● Gerenciar uma fila de chamadas em um call center
● Lista de espera em um restaurante
● Impressora em rede
● Servidor Web que responde a requisições
12
UFMA / Licenciatura em computação - Estrutura de dados
Exemplo: Escalonamento de processos
13
Exemplo: Escalonamento de processos
Prof. Francisco Glaubos UFMA / Estrutura de dados
O tipo de dado abstrato Fila
● Objetos em sequência
○ acesso e exclusão apenas do 1º elemento
○ inserção apenas no final
● Uma fila Q suporta os seguintes dois métodos fundamentais:
○ Q.insere(e): adiciona o elemento ‘e’ no final da fila Q
○ Q.remove(): remove e retorna o primeiro elemento da fila Q
● um erro ocorre se a fila estiver vazia
14
Prof. Francisco Glaubos UFMA / Estrutura de dados
O tipo de dado abstrato Fila
● Métodos de suporte:
○ Q.primeiro(): retorna uma referência ao elemento da frente da fila Q
○ Q.vazia(): Retorna True se a fila Q não contém nenhum elemento
○ tam(Q): retorna o número de elementos na fila Q
● Fila recém criada está vazia, e não há limite na sua capacidade
● Elemento inseridos podem ser de qualquer tipo
15
UFMA / Licenciatura em computação - Estrutura de dados
UFMA / Licenciatura em computação - Estrutura de dados
Exemplo de
operações
em uma Fila
16
Operação Valor de retorno Primeiro <- Q <-
Último
Q.insere(5) - [5]
Q.insere(3) - [5, 3]
tam(Q) 2 [5, 3]
Q.remove( ) 5 [3]
Q.vazia( ) False [3]
Q.remove( ) 3 [ ]
Q.vazia( ) True []
Q.remove( ) “erro” []
UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Implementação baseada em Python List
● O python não tem um tipo abstrato Pilha
● Implementação semelhante à Pilha
● Podemos implementar uma fila utilizando uma lista de Python
○ método append(e)
○ método pop(0)
17
UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Implementação baseada em Python List
18
UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados
Exemplo de execução
19

Mais conteúdo relacionado

Mais procurados (20)

Estrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas EstáticasEstrutura de Dados - Aula 06 - Pilhas Estáticas
Estrutura de Dados - Aula 06 - Pilhas Estáticas
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Pilha e Fila Dinamica
Pilha e Fila DinamicaPilha e Fila Dinamica
Pilha e Fila Dinamica
 
Pilha em C
Pilha em CPilha em C
Pilha em C
 
Filas encadeadas
Filas encadeadasFilas encadeadas
Filas encadeadas
 
Estrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listasEstrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listas
 
Pilhas encadeadas
Pilhas encadeadasPilhas encadeadas
Pilhas encadeadas
 
Estrutura de dados - Filas
Estrutura de dados - FilasEstrutura de dados - Filas
Estrutura de dados - Filas
 
Aula 13
Aula 13Aula 13
Aula 13
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Aula 8
Aula 8Aula 8
Aula 8
 
Aula 20
Aula 20Aula 20
Aula 20
 
Aula 21
Aula 21Aula 21
Aula 21
 
Exercício de estrutura de dados 01
Exercício de estrutura de dados 01Exercício de estrutura de dados 01
Exercício de estrutura de dados 01
 
Microsserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORMMicrosserviços com Spring Boot e ORM
Microsserviços com Spring Boot e ORM
 
Aula 22
Aula 22Aula 22
Aula 22
 
Slides listas encadeadas
Slides  listas encadeadasSlides  listas encadeadas
Slides listas encadeadas
 
Apresentação - Estruturas de Dados
Apresentação - Estruturas de DadosApresentação - Estruturas de Dados
Apresentação - Estruturas de Dados
 
Listas duplamente encadeadas
Listas duplamente encadeadasListas duplamente encadeadas
Listas duplamente encadeadas
 

Semelhante a Slides pilhas e_filas

Estrutura de Dados - Aula 08
Estrutura de Dados - Aula 08Estrutura de Dados - Aula 08
Estrutura de Dados - Aula 08thomasdacosta
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Ricardo Terra
 
Pilhas e Filas.ppt
Pilhas e Filas.pptPilhas e Filas.ppt
Pilhas e Filas.pptJoberthSilva
 
Estrutura de Dados - Aula 07
Estrutura de Dados - Aula 07Estrutura de Dados - Aula 07
Estrutura de Dados - Aula 07thomasdacosta
 
Aula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oopAula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oopJean Martina
 
Comparaçao entre modelos de turbulência do tipo RANS por simulação de Fluxo e...
Comparaçao entre modelos de turbulência do tipo RANS por simulação de Fluxo e...Comparaçao entre modelos de turbulência do tipo RANS por simulação de Fluxo e...
Comparaçao entre modelos de turbulência do tipo RANS por simulação de Fluxo e...jfmitre
 

Semelhante a Slides pilhas e_filas (12)

Estrutura de Dados - Aula 08
Estrutura de Dados - Aula 08Estrutura de Dados - Aula 08
Estrutura de Dados - Aula 08
 
Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)Apostila Algoritmos e Estrutura de Dados (AEDS)
Apostila Algoritmos e Estrutura de Dados (AEDS)
 
Pilhas e Filas.ppt
Pilhas e Filas.pptPilhas e Filas.ppt
Pilhas e Filas.ppt
 
Aula 9
Aula 9Aula 9
Aula 9
 
Aula 10
Aula 10 Aula 10
Aula 10
 
Estrutura de Dados - Aula 07
Estrutura de Dados - Aula 07Estrutura de Dados - Aula 07
Estrutura de Dados - Aula 07
 
Aula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oopAula 01 -_pilhas_e_filas_com_vetores-oop
Aula 01 -_pilhas_e_filas_com_vetores-oop
 
Filas
FilasFilas
Filas
 
Aula14
Aula14Aula14
Aula14
 
Aula02 Pilhas
Aula02   PilhasAula02   Pilhas
Aula02 Pilhas
 
Introducao ao python
Introducao ao pythonIntroducao ao python
Introducao ao python
 
Comparaçao entre modelos de turbulência do tipo RANS por simulação de Fluxo e...
Comparaçao entre modelos de turbulência do tipo RANS por simulação de Fluxo e...Comparaçao entre modelos de turbulência do tipo RANS por simulação de Fluxo e...
Comparaçao entre modelos de turbulência do tipo RANS por simulação de Fluxo e...
 

Slides pilhas e_filas

  • 1. Pilhas e Filas Prof. Francisco Glaubos Deptº. de Informática, UFMA francisco.glaubos@ufma.br
  • 2. Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados Pilhas ● Coleção de elementos que segue o princípio last-in first-out (LIFO) ○ Último a entrar, primeiro a sair ● Operações fundamentais: Insere e Remove ○ “inserir” e “remover” ○ Ambas são O(1) ● O termo “Pilha” é uma metáfora para pilha de livros 2
  • 3. Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados Exemplos de utilização ● Navegadores de Internet e sites visitados recentemente ● Editores de texto e o mecanismo “desfazer” 3
  • 4. UFMA / Estrutura de dados Exemplo de operações em uma pilha 4 Operação Valor de retorno Conteúdo da Pilha S.Insere(5) - [5] S.Insere(3) - [5, 3] tam(S) 2 [5, 3] S.vazia() False [5, 3] S.topo() 3 [5, 3] S.Remove() 3 [5] S.Remove() 5 [] S.Remove() “erro” []
  • 5. Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados O tipo abstrato de dados (TAD) Pilha ● Uma das mais simples Estruturas de dados (ED), e entre as mais importantes. ● Uma pilha é um tipo de dado abstrato, tal que uma instância sua S suporta os seguintes métodos: ○ S.Insere (e): adiciona o elemento ‘e’ ao topo da pilha S ○ S.Remove (): Remove e retorna o elemento superior da pilha S ■ um erro ocorre se a pilha estiver vazia 5
  • 6. Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados O tipo abstrato de dados (TAD) Pilha ● Métodos de acesso: ○ S.topo(): retorna uma referência ao elemento do topo da pilha S ■ um erro ocorre se a pilha estiver vazia ○ S.vazia(): Retorna True se a pilha S não possuir nenhum elemento; False, caso contrário. ○ tam(S): retorna o número de elementos da pilha S ● Uma pilha recém-criada está vazia ● Pilha sem limite na capacidade ● Elemento da pilha podem ser de tipos variados 6
  • 7. Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados Implementação baseada em Python List ● O python não tem um tipo abstrato Pilha ● Podemos implementar uma pilha utilizando uma lista de Python ○ método append(.) ○ método pop() ○ topo da pilha no final da lista 7
  • 8. Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados Implementação baseada em Python List 8
  • 9. Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados Implementação baseada em Python List 9
  • 10. Prof. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados Exemplo de execução 10
  • 11. Prof. Francisco Glaubos UFMA / Estrutura de dados Filas ● É uma estrutura de dados “prima” da Pilha ● Segue o princípio first-in, first-out (FIFO) ○ somente o elemento que está na fila por mais tempo, pode ser removido. ● Metáfora para fila de pessoas 11
  • 12. Prof. Francisco Glaubos UFMA / Estrutura de dados Exemplos de utilização ● Gerenciar uma fila de chamadas em um call center ● Lista de espera em um restaurante ● Impressora em rede ● Servidor Web que responde a requisições 12
  • 13. UFMA / Licenciatura em computação - Estrutura de dados Exemplo: Escalonamento de processos 13 Exemplo: Escalonamento de processos
  • 14. Prof. Francisco Glaubos UFMA / Estrutura de dados O tipo de dado abstrato Fila ● Objetos em sequência ○ acesso e exclusão apenas do 1º elemento ○ inserção apenas no final ● Uma fila Q suporta os seguintes dois métodos fundamentais: ○ Q.insere(e): adiciona o elemento ‘e’ no final da fila Q ○ Q.remove(): remove e retorna o primeiro elemento da fila Q ● um erro ocorre se a fila estiver vazia 14
  • 15. Prof. Francisco Glaubos UFMA / Estrutura de dados O tipo de dado abstrato Fila ● Métodos de suporte: ○ Q.primeiro(): retorna uma referência ao elemento da frente da fila Q ○ Q.vazia(): Retorna True se a fila Q não contém nenhum elemento ○ tam(Q): retorna o número de elementos na fila Q ● Fila recém criada está vazia, e não há limite na sua capacidade ● Elemento inseridos podem ser de qualquer tipo 15
  • 16. UFMA / Licenciatura em computação - Estrutura de dados UFMA / Licenciatura em computação - Estrutura de dados Exemplo de operações em uma Fila 16 Operação Valor de retorno Primeiro <- Q <- Último Q.insere(5) - [5] Q.insere(3) - [5, 3] tam(Q) 2 [5, 3] Q.remove( ) 5 [3] Q.vazia( ) False [3] Q.remove( ) 3 [ ] Q.vazia( ) True [] Q.remove( ) “erro” []
  • 17. UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados Implementação baseada em Python List ● O python não tem um tipo abstrato Pilha ● Implementação semelhante à Pilha ● Podemos implementar uma fila utilizando uma lista de Python ○ método append(e) ○ método pop(0) 17
  • 18. UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados Implementação baseada em Python List 18
  • 19. UFMA / Licenciatura em computação - Estrutura de dadosProf. Francisco Glaubos UFMA / Licenciatura em computação - Estrutura de dados Exemplo de execução 19