Você está na página 1de 18

Pilhas e Filas

Prof. Andrey Masiero

25 de agosto de 2017
Agenda

1 Introdução

2 Pilha

3 Fila

4 Exercícios

5 Referências
Introdução

São conjuntos dinâmicos para armazenar informações;


A informação removida é especificada previamente a sua
implementação.

Prof. Andrey Masiero Pilhas e Filas 25 de agosto de 2017 1 / 16


Introdução

Pilha
o elemento removido é o mais recente;
Esse tipo de operação é conhecida como LIFO (Last In, First Out).

Fila
o elemento removido é o mais antigo;
Esse tipo de operação é conhecida como FIFO (First In, First Out).

Prof. Andrey Masiero Pilhas e Filas 25 de agosto de 2017 2 / 16


Pilha

Prof. Andrey Masiero Pilhas e Filas 25 de agosto de 2017 3 / 16


Pilha

Tabela: Operações básicas de Pilha

Operação Descrição
push Insere um novo valor na pilha
pop Remove um valor da pilha
top Consulta o valor no topo da pilha
isEmpty Verifica se a pilha está vazia

Prof. Andrey Masiero Pilhas e Filas 25 de agosto de 2017 4 / 16


push

public void push( Object valor ) {


topo = topo + 1;
pilha[topo] = valor;
}

Prof. Andrey Masiero Pilhas e Filas 25 de agosto de 2017 5 / 16


pop

public Object pop () {


topo = topo - 1;
return pilha[topo + 1];
}

Prof. Andrey Masiero Pilhas e Filas 25 de agosto de 2017 6 / 16


top

public Object top () {


return pilha[top ];
}

Prof. Andrey Masiero Pilhas e Filas 25 de agosto de 2017 7 / 16


isEmpty

public boolean isEmpty () {


return topo == 0;
}

Prof. Andrey Masiero Pilhas e Filas 25 de agosto de 2017 8 / 16


Fila
Prof. Andrey Masiero Pilhas e Filas 25 de agosto de 2017 9 / 16
Fila

Tabela: Operações básicas de Fila

Operação Descrição
enqueue Insere um novo valor na fila
dequeue Remove um valor da fila
front Consulta o valor no início da fila
isEmpty Verifica se a fila está vazia

Prof. Andrey Masiero Pilhas e Filas 25 de agosto de 2017 10 / 16


enqueue

public void enqueue ( Object valor ) {


fila[fim] = valor;
if (fim = tamanho )
fim = 0;
else
fim = fim + 1;
}

Prof. Andrey Masiero Pilhas e Filas 25 de agosto de 2017 11 / 16


dequeue

public Object dequeue () {


x = fila[ inicio ];
if ( inicio == tamanho )
inicio = 0;
else
inicio = inicio + 1;
return x;
}

Prof. Andrey Masiero Pilhas e Filas 25 de agosto de 2017 12 / 16


front

public Object front () {


return fila[ inicio ];
}

Prof. Andrey Masiero Pilhas e Filas 25 de agosto de 2017 13 / 16


isEmpty

public boolean isEmpty () {


return ( inicio == 0) && (fim == 0);
}

Prof. Andrey Masiero Pilhas e Filas 25 de agosto de 2017 14 / 16


Exercícios

1 Implemente uma Pilha utilizando vetor (sequencial/estática).


2 Implemente uma Fila utilizando vetor (sequencial/estática).
3 Implemente uma Pilha utilizando vetor (encadeada/dinâmica).
4 Implemente uma Fila utilizando vetor (encadeada/dinâmica).
5 Faça um programa que teste todas as estruturas criadas.

Prof. Andrey Masiero Pilhas e Filas 25 de agosto de 2017 15 / 16


Referências Bibliográficas

1 Cormen, Thomas H., Charles E. Leiserson, Ronald L. Rivest, and


Clifford Stein. “Introduction to algorithms second edition.” (2001).
2 Tamassia, Roberto, and Michael T. Goodrich. “Estrutura de Dados e
Algoritmos em Java.” Porto Alegre, Ed. Bookman 4 (2007).
3 Ascencio, Ana Fernanda Gomes, and Graziela Santos de Araújo.
“Estruturas de Dados: algoritmos, análise da complexidade e
implementações em JAVA e C/C++.” São Paulo: Perarson Prentice
Halt 3 (2010).

Prof. Andrey Masiero Pilhas e Filas 25 de agosto de 2017 16 / 16

Você também pode gostar