Você está na página 1de 49

Considerações Iniciais

Pilha
Fila
Referências

Pilha e Fila
Sandro Carvalho Izidoro

13 de agosto de 2016

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Apresentação

1 Considerações Iniciais

2 Pilha

3 Fila

4 Referências

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Considerações Iniciais

Existem determinadas estruturas de dados que não utilizam de


ordem para organizar seus dados. Para determinadas
aplicações é imposto um critério que restringe a inserção e
retirada dos elementos que compõem um conjunto de dados,
ou seja, são denidas disciplinas de acessos.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Considerações Iniciais

Existem determinadas estruturas de dados que não utilizam de


ordem para organizar seus dados. Para determinadas
aplicações é imposto um critério que restringe a inserção e
retirada dos elementos que compõem um conjunto de dados,
ou seja, são denidas disciplinas de acessos.
Disciplina de acesso é a forma pela qual os elementos de uma
determinada estrutura de dados serão inseridos e retirados
desta estrutura. Os dois critérios mais usuais são:

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Considerações Iniciais

Existem determinadas estruturas de dados que não utilizam de


ordem para organizar seus dados. Para determinadas
aplicações é imposto um critério que restringe a inserção e
retirada dos elementos que compõem um conjunto de dados,
ou seja, são denidas disciplinas de acessos.
Disciplina de acesso é a forma pela qual os elementos de uma
determinada estrutura de dados serão inseridos e retirados
desta estrutura. Os dois critérios mais usuais são:

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Considerações Iniciais

LIFO (Last In First Out)


Dentre os elementos que ainda permanecem no conjunto, o
primeiro a ser retirado é o ultimo que tiver sido inserido. Este
critério é utilizado na estrutura de dados denominada Pilha.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Considerações Iniciais

LIFO (Last In First Out)


Dentre os elementos que ainda permanecem no conjunto, o
primeiro a ser retirado é o ultimo que tiver sido inserido. Este
critério é utilizado na estrutura de dados denominada Pilha.

FIFO (First In First Out)


Dentre os elementos que ainda permanecem no conjunto, o
primeiro elemento a ser retirado é o primeiro que tiver sido inserido.
Esse critério caracteriza a estrutura de dados Fila.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Considerações Iniciais

LIFO (Last In First Out)


Dentre os elementos que ainda permanecem no conjunto, o
primeiro a ser retirado é o ultimo que tiver sido inserido. Este
critério é utilizado na estrutura de dados denominada Pilha.

FIFO (First In First Out)


Dentre os elementos que ainda permanecem no conjunto, o
primeiro elemento a ser retirado é o primeiro que tiver sido inserido.
Esse critério caracteriza a estrutura de dados Fila.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Pilha
Uma pilha é uma estrutura linear de dados que pode ser acessada
somente por uma de suas extremidades para armazenar e recuperar
dados. Ela é denida em termos das operações que modicam e
das que vericam seu status:

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Pilha
Uma pilha é uma estrutura linear de dados que pode ser acessada
somente por uma de suas extremidades para armazenar e recuperar
dados. Ela é denida em termos das operações que modicam e
das que vericam seu status:
IniciarPilha - Limpa a pilha;

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Pilha
Uma pilha é uma estrutura linear de dados que pode ser acessada
somente por uma de suas extremidades para armazenar e recuperar
dados. Ela é denida em termos das operações que modicam e
das que vericam seu status:
IniciarPilha - Limpa a pilha;
PilhaVazia - Verica se a pilha está vazia;

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Pilha
Uma pilha é uma estrutura linear de dados que pode ser acessada
somente por uma de suas extremidades para armazenar e recuperar
dados. Ela é denida em termos das operações que modicam e
das que vericam seu status:
IniciarPilha- Limpa a pilha;
PilhaVazia - Verica se a pilha está vazia;

PilhaCheia - Verica se há espaço para inserir novos

elementos na pilha;

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Pilha
Uma pilha é uma estrutura linear de dados que pode ser acessada
somente por uma de suas extremidades para armazenar e recuperar
dados. Ela é denida em termos das operações que modicam e
das que vericam seu status:
IniciarPilha- Limpa a pilha;
PilhaVazia - Verica se a pilha está vazia;

PilhaCheia - Verica se há espaço para inserir novos

elementos na pilha;
Empilha - Insere um novo elemento na pilha;

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Pilha
Uma pilha é uma estrutura linear de dados que pode ser acessada
somente por uma de suas extremidades para armazenar e recuperar
dados. Ela é denida em termos das operações que modicam e
das que vericam seu status:
IniciarPilha - Limpa a pilha;
PilhaVazia - Verica se a pilha está vazia;

PilhaCheia - Verica se há espaço para inserir novos

elementos na pilha;
Empilha - Insere um novo elemento na pilha;

Desempilha - Retira um elemento da pilha (o elemento mais

alto da pilha);

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Pilha
Uma pilha é uma estrutura linear de dados que pode ser acessada
somente por uma de suas extremidades para armazenar e recuperar
dados. Ela é denida em termos das operações que modicam e
das que vericam seu status:
IniciarPilha - Limpa a pilha;
PilhaVazia - Verica se a pilha está vazia;

PilhaCheia - Verica se há espaço para inserir novos

elementos na pilha;
Empilha - Insere um novo elemento na pilha;

Desempilha - Retira um elemento da pilha (o elemento mais

alto da pilha);
TopoPilha - Retorna o elemento mais alto da pilha sem

removê-lo.
Sandro Carvalho Izidoro Pilha e Fila
Considerações Iniciais
Pilha
Fila
Referências

Pilha

Pode-se implementar uma pilha usando dois recursos básicos das


linguagens de programação:

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Pilha

Pode-se implementar uma pilha usando dois recursos básicos das


linguagens de programação:
1 Vetor;

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Pilha

Pode-se implementar uma pilha usando dois recursos básicos das


linguagens de programação:
1 Vetor;

2 Alocação dinâmica de memória.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Pilha usando vetor


Para implementar uma pilha através de uma estrutura estática,
além do vetor onde serão armazenados os elementos da pilha, será
necessário uma variável inteira que sinalize a posição do último
elemento inserido, ou seja, o topo da pilha.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Pilha usando vetor


Para implementar uma pilha através de uma estrutura estática,
além do vetor onde serão armazenados os elementos da pilha, será
necessário uma variável inteira que sinalize a posição do último
elemento inserido, ou seja, o topo da pilha.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Pilha usando vetor

Para iniciar esta estrutura, basta atribuir o valor -1 para o


campo Topo.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Pilha usando vetor

Para iniciar esta estrutura, basta atribuir o valor -1 para o


campo Topo.
Geralmente, a pilha é muito útil nas situações em que os
dados tem que ser armazenados e então recuperados na ordem
inversa.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Pilha usando vetor

Para iniciar esta estrutura, basta atribuir o valor -1 para o


campo Topo.
Geralmente, a pilha é muito útil nas situações em que os
dados tem que ser armazenados e então recuperados na ordem
inversa.
Uma aplicação da pilha é o casamento de delimitadores em um
programa. Esse é um exemplo importante, porque o
casamento de delimitadores é parte de qualquer compilador.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Pilha usando vetor

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Pilha usando alocação dinâmica

A estrutura de dados Pilha também pode ser implementada


utilizando alocação dinâmica de memória.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Pilha usando alocação dinâmica

A estrutura de dados Pilha também pode ser implementada


utilizando alocação dinâmica de memória.
Ela se assemelha a uma lista encadeada cuja a inserção
somente acontece na primeira posição da lista, facilitando o
procedimento de remoção que, obviamente, deve ser o
primeiro elemento.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Pilha usando alocação dinâmica

A estrutura de dados Pilha também pode ser implementada


utilizando alocação dinâmica de memória.
Ela se assemelha a uma lista encadeada cuja a inserção
somente acontece na primeira posição da lista, facilitando o
procedimento de remoção que, obviamente, deve ser o
primeiro elemento.
Neste tipo de implementação não há necessidade da primitiva
PilhaCheia, uma vez que, teoricamente, toda memória está
disponível para a alocação.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Pilha usando alocação dinâmica

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Pilha usando alocação dinâmica

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Fila

Uma Fila é simplesmente uma linha de espera que cresce


somando elementos ao seu nal e que diminui tomando
elementos de sua frente.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Fila

Uma Fila é simplesmente uma linha de espera que cresce


somando elementos ao seu nal e que diminui tomando
elementos de sua frente.
Diferente de uma pilha, uma la é uma estrutura na qual
ambas as extremidades são usadas: uma para adicionar novos
elementos e outra para removê-los.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Fila

Uma Fila é simplesmente uma linha de espera que cresce


somando elementos ao seu nal e que diminui tomando
elementos de sua frente.
Diferente de uma pilha, uma la é uma estrutura na qual
ambas as extremidades são usadas: uma para adicionar novos
elementos e outra para removê-los.
Em consequência, o último elemento tem que esperar até que
todos os elementos que o precedem na la sejam removidos.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Fila

As operações de uma Fila são:

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Fila

As operações de uma Fila são:


IniciarFila - Limpa a la;

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Fila

As operações de uma Fila são:


IniciarFila - Limpa a la;

FilaVazia - Verica se a la está vazia;

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Fila

As operações de uma Fila são:


IniciarFila - Limpa a la;

FilaVazia - Verica se a la está vazia;

FilaCheia - Verica se há espaço para inserir novos elementos

na la;

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Fila

As operações de uma Fila são:


IniciarFila - Limpa a la;

FilaVazia - Verica se a la está vazia;

FilaCheia - Verica se há espaço para inserir novos elementos

na la;
InsereFila - Insere um novo elemento na la;

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Fila

As operações de uma Fila são:


IniciarFila - Limpa a la;

FilaVazia - Verica se a la está vazia;

FilaCheia - Verica se há espaço para inserir novos elementos

na la;
InsereFila - Insere um novo elemento na la;

RetiraFila - Retira um elemento da la;

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Fila

As operações de uma Fila são:


IniciarFila - Limpa a la;

FilaVazia - Verica se a la está vazia;

FilaCheia - Verica se há espaço para inserir novos elementos

na la;
InsereFila - Insere um novo elemento na la;

RetiraFila - Retira um elemento da la;

Primeiro - Retorna o primeiro elemento da la sem removê-lo.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Fila usando vetor

Como na implementação por vetor da estrutura pilha, os elementos


são adicionados ao nal da la, mas, como as posições liberadas
durante a operação de remoção devem ser reaproveitadas, o nal da
la pode ocorrer antes da posição de início da la dentro do vetor.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Fila usando vetor

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Fila usando vetor

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Fila usando vetor

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Fila usando alocação dinâmica

A implementação utilizando alocação dinâmica de memória


pode ser realizada com o uso de um descritor que indica o
ponteiro para o início e o m da la.

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Fila usando alocação dinâmica

A implementação utilizando alocação dinâmica de memória


pode ser realizada com o uso de um descritor que indica o
ponteiro para o início e o m da la.
A seguir as primitivas de inserção e remoção em la por
alocação dinâmica de memória:

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Fila usando alocação dinâmica

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Implementação de Fila usando alocação dinâmica

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Referências

Referências
Adam Drozdek. Estrutura de Dados e Algoritmos em C++.
Pioneira Thomson Learning, São Paulo, 2002.
H.M.Deitel, P.J.Deitel. C++:Como programar. 5ed. São
Paulo: Pearson Prentice Hall, 2006.
Jayme Luiz Szwarcter and Lilian Markenzon. Estruturas de
Dados e Seus Algoritmos. LTC Editora, Rio de Janeiro, 1994.
Material elaborado a partir das notas de aula do professor
Edmilson Marmo Moreira (UNIFEI).

Sandro Carvalho Izidoro Pilha e Fila


Considerações Iniciais
Pilha
Fila
Referências

Referências

Referências
Adam Drozdek. Estrutura de Dados e Algoritmos em C++.
Pioneira Thomson Learning, São Paulo, 2002.
H.M.Deitel, P.J.Deitel. C++:Como programar. 5ed. São
Paulo: Pearson Prentice Hall, 2006.
Jayme Luiz Szwarcter and Lilian Markenzon. Estruturas de
Dados e Seus Algoritmos. LTC Editora, Rio de Janeiro, 1994.
Material elaborado a partir das notas de aula do professor
Edmilson Marmo Moreira (UNIFEI).

Sandro Carvalho Izidoro Pilha e Fila

Você também pode gostar