Você está na página 1de 3

7.

Conceitos, tipos e operações de Pilhas e Filas


Pilhas são estruturas de dados do tipo LIFO (last-in first-out), onde o último elemento a
ser inserido, será o primeiro a ser retirado. Assim, uma pilha permite acesso a apenas um
item de dados - o último inserido. Para processar o penúltimo item inserido, deve-se
remover o último.
A implementação de pilhas pode ser realizada através de vetor ou através de listas
encadeadas. Numa pilha, a manipulação dos elementos é realizada em apenas uma das
extremidades, chamada de topo, em oposição a outra extremidade, chamada de base.
Operações Associadas: 1. criar (P) - criar uma pilha P vazia 2. inserir (x, P) - insere x no
topo de P (empilha): push(x,P) 3. vazia (P) - testa se P está vazia 4. topo (P) - acessa o
elemento do topo da pilha (sem eliminar) 5. elimina (P) - elimina o elemento do topo de
P (desempilha): pop(P).
Operações com Pilha: Todas as operações em uma pilha podem ser imaginadas como as
que ocorre numa pilha de pratos em um restaurante ou como num jogo com as cartas de
um baralho:
• criação da pilha ();
• empilhar (push) - o elemento é o parâmetro nesta operação;
• desempilhar (pop);
• mostrar o topo;
• verificar se a pilha está vazia;
• verificar se a pilha está cheia.
• Verificar o tamanho atual da pilha.
Uma pilha pode ser implementada de forma sequencial ou encadeada.
Pilhas sequenciais
• Nas pilhas sequenciais é necessário conhecer os limites da pilha: início e fim.
• Os itens são armazenados em posições contíguas de memória.
• Não se pode desempilhar elementos em uma pilha vazia.
• Não se pode empilhar mais elementos do que o tamanho máximo definido
Pilhas encadeadas
• As pilhas encadeadas utilizam os mesmos conceitos de encadeamento porém a
inclusão e remoção é feita somente pelo topo.
• Não se pode desempilhar elementos em uma pilha vazia.
No caso geral de listas ordenadas, a maior vantagem da alocação encadeada sobre a
seqüencial - se a memória não for problema - é a eliminação de deslocamentos na inserção
ou eliminação dos elementos. Pode-se dizer que a alocação seqüencial é mais vantajosa
na maioria das vezes.
As filas são estruturas de dados do tipo FIFO (first-in first-out), onde o primeiro elemento
a ser inserido, será o primeiro a ser retirado, ou seja, adiciona-se itens no fim e remove-
se do início. A implementação de filas pode ser realizada através de vetor ou através de
listas encadeadas.
uma fila tem sempre um indicador de onde começa e de onde termina. Quando queremos
inserir um elemento na fila, esta operação é realizada no final da estrutura. Quando
queremos remover um elemento da fila, essa operação é realizada no início da estrutura.
Esses extremos são referenciados como inicio e fim de uma fila F . Se a fila F é
implementada em alocação seqüencial, isto é, sobre um vetor, então esses extremos são
índices desse vetor. Caso contrário, se for implementada em alocação encadeada, então
esses extremos são apontadores para o primeiro e o último registros da fila.
Uma fila pode ser implementada de forma sequencial ou encadeada.
Filas sequenciais
• Nas filas sequenciais é necessário conhecer os limites da fila: início e fim.
• Os itens são armazenados em posições contíguas de memória.
• Não se pode enfileirar mais elementos do que o tamanho máximo definido.
Filas encadeadas
• As filas encadeadas utilizam os mesmos conceitos de encadeamento porém a
inclusão é sempre no fim e a remoção é feita somente pelo inicio.
Operações definidas para fila:
1. Criar uma fila vazia
Tem um sentido de chegada: – Fila vazia
2. Enfileirar o item no final da fila
Inserindo Elementos: O elemento entra na última posição. E avança até a primeira
posição disponível.
3. Desenfileirar, retorna o item do inicio da fila e o retira da fila.
Não podemos remover elementos que não estejam no inicio da fila!
4. Verificar se a fila está vazia

Exemplos de uso de filas na computação:


• Filas de impressão: Impressoras tem uma fila, caso vários documentos sejam
impressos, por um ou mais usuários, os primeiros documentos impressos serão de
quem enviar primeiro;
• Filas de processos: Vários programas podem estar sendo executados pelo sistema
operacional. O mesmo tem uma fila que indica a ordem de qual será executado
primeiro;
• Filas de tarefas: Um programa pode ter um conjunto de dados para processar.
Estes dados podem estar dispostos em uma fila, onde o que foi inserido primeiro,
será atendido primeiro.
Variações de Filas:
• Fila de Prioridades: Cada item tem uma prioridade. Elementos mais prioritários
podem ser atendidos antes, mesmo não estando no início da fila;
• Fila Circular: Neste tipo de fila os elementos nem sempre são removidos ao serem
atendidos, mas voltam ao fim da fila para serem atendidos novamente mais tarde.

Você também pode gostar