Opa.. iae, na paz?
Estou escrevendo esse artigo para compartilhar com vocês como foi que eu fixei de uma vez por todas os conceitos de Fila e Pilha na minha cabeça e nunca mais confundi suas particularidades.
Cenários em que você deve continuar lendo o artigo e confiar neste humilde desenvolvedor:
- Se você não faz ideia do que signfica pilha e fila dentro do contexto de Estrutura de Dados =P
- Se você se confunde todo para responder a
malditabendita pergunta 'Qual a diferença entre pilha e fila?' - Se você sua frio quando alguém te pergunta se pilha é LIFO e fila é FIFO
- Se você ficou curioso para entender de onde eu tirei essa relação do Bob Esponja com Estrutura de Dados =B
- Se você está 'de boa' por aí e quer ler por ler mesmo HAHA =]
Se você resolveu continuar então está na hora de te aprensentar o personagem que irá nos ajudar a fixar esses conceitos e nunca mais esquecermos. Com vocês: BOB ESPONJAAAAAAA =]
E de onde surgiu essa maluquice?
Bom, certa vez eu estava fazendo uma entrevista com uma Tech Recruter para uma vaga de Desenvolvedor e ela me perguntou o seguinte "Rodolfo, você consegue me explicar o que é e como funcionam pilhas e filas?"
Todos esses questionamentos somados ao fato de estar nervoso fez com que os conceitos sumissem da minha cabeça e gaguejando eu disse apenas "São estruturas de dados bem famosas!" e ela respondeu com um simples "Humnn, ok!!!".
A entrevista continuou com algumas outras perguntas simples e no final acabou que eu passei para a próxima fase. Não conseguia ficar feliz pois não conseguia esquecer minha resposta 'lixo' para aquela pergunta tão tranquila. Como eu pude esquecer conceitos tão básicos? Fila é LIFO ou FIFO mesmo? Eu não sabia era de mais nada naquele momento.
Como eu já estava estressado resolvi assistir um pouco de televisão e lá estava passando o nosso querido Bob Esponja. Assistindo o desenho eu exclamei sozinho em casa:
Antes, um pouco de teoria:
Filas e pilhas são esturutras de dados do tipo Lista Linear. São compostas por elementos de um mesmo tipo de dado e que estão organizados de maneira sequencial. Não necessariamente fisicamente em sequência mas possuindo ordem lógica entre eles.
Podemos fazer diversas operações em listas lineares:
- Criação de uma lista
- Inserção e exclusão de um elemento
- Acesso a um elemento
- Combinação de listas em uma só
- Destruição de uma lista
- Outros
A forma como as operações de acesso, inserção e exclusão em uma lista linear são executadas é que vão determinar o seu tipo. É exatamente nesse ponto que nosso jogo começa \o/
O conceito implementado por uma pilha é o de LIFO “Last-in, First-out” ou FILO "First-in, last-out" traduzindo para o nosso "portuga", o último elemento a entrar na lista é o primeiro a sair.
Enquanto uma fila implementa o conceito FIFO “First-in, First-out”. Ou seja, o primeiro elemento que entra na lista é o primeiro a sair.
Na teoria é isso, muito simples né? Para fixar que tal exemplificarmos com cenários do mundo ficticio da fenda do biquini ? =]
PILHA
Sempre que te perguntarem sobre Pilha lembre-se do Bob Esponja lavando pratos e o quanto é cômico ver uma ESPONJA lavando vasilhas com um PANO kkkkkk.
Como funciona o processo de lavar pratos?
- Um espaço é reservado para armazenar/empilhar os pratos
- O primeiro prato que chega é inserido no espaço reservado
- Todo novo prato sujo é inserido na parte de cima (topo) da pilha de pratos
- O prato que será lavado sempre será o do topo da pilha
Ou seja, o ÚLTIMO (last in) prato que entrar na pilha de pratos do Bob esponja será o primeiro que ele irá lavar (first out).
FILA
Quando te perguntarem sobre Fila é só lembrar da fila que é formada para comprar um delicioso Hambúrguer de Siri.
Como funciona?
- Um espaço é reservado para que a fila seja criada na porta do Siri Cascudo
- O primeiro interessado chega ao local e é inserido no início da fila
- Todo novo interessado que chega é inserido no final da fila
- Quem estiver no início da fila será liberado para entrar no restaurante e comprar seu lanche.
Ou seja, quem chegar primeiro na porta do Siri Cascudo será o PRIMEIRO da fila (First in) e consequentemente o PRIMEIRO a comprar o seu lanche (First out).
Consegui ou não explicar ? Aposto que você nunca mais vai esquecer HAHAHAHA (seja por bem ou por mal lol)
see ya
\o
Top comments (3)
Excelente brow!
Parabéns pelo artigo, muito legal o exemplo!
Muito bem explicado!