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