paulo1205
(usa Ubuntu)
Enviado em 25/05/2016 - 01:58h
Se você tem realmente uma fila, deve saber que só há um jeito de colocar e um jeito de tirar elementos da fila, que são, respectivamente, colocar o elemento no final e tirar o elemento do início. Tudo o que vem no meio é (ou deveria ser) inacessível para o usuário do objeto da classe fila.
A pilha, por outro lado, só permite trabalhar em uma das extremidades. A analogia com uma pilha de pratos é excelente. Cada novo elemento colocado na pilha fica em cima do anterior e impede o acesso direto a ele. E se eu quiser tirar um elemento, o elemento a ser tirado será o que estiver no topo da pilha.
Internamente, tanto filas quanto pilhas podem ser implementadas tanto como arrays quanto como listas. Arrays permitem acesso direto a qualquer elemento, e listas permitem buscas sequenciais de valores específicos, com inclusões e exclusões em qualquer posição intermediária. No entanto, independentemente do método usado internamente para implementação, quando de fala de
fila, a quantidade de operações é restrita para garantir somente operações FIFO (
first in, first out, o primeiro a entrar é o primeiro a sair). Logo uma classe que implementa pilha precisa de apenas dois métodos: um para colocar mais um elemento no final, e outro para tirar um elemento do início (um terceiro método, opcional, e que não viola a propriedade FIFO, é um que sirva para informar o tamanho atual da fila). Por sua vez, uma
pilha só tem de entregar operações LIFO (
last in, first out, o último a entrar é o primeiro a sair). Consequentemente, a pilha so precisa de dois métodos: um para acrescentar elemento um no topo, e outro para tirar o elemento que estiver no topo (com um terceiro método, opcional, para dizer a altura da pilha).
Sendo assim, se você quer varrer os elementos de uma fila previamente montada, para então selecionar alguns, a única abordagem possível será tirar cada um dos elementos da frente da fila e examinar seu valor, e depois, se quiser, colocá-los em outra fila (ou até na mesma, se sua classe tiver o método de contagem de elementos e se você tomar os devidos cuidados).