Pensamento computacional 13-06-24
Pilha
Em um array, é possível utilizar funções próprias para manipular elementos em qualquer
posição da lista. Porém, há situações (veremos exemplos mais adiante) onde é desejável mais
controle sobre as operações que podem ser feitas na estrutura. Aí entra a implementação de
estruturas de dados como a pilha (stack) e a fila (queue).
A pilha é uma estrutura de dados que, assim como o array, é similar a uma lista. O
paradigma principal por trás da pilha é o LIFO - Last In, First Out, ou “o último a entrar é o
primeiro a sair”, em tradução livre.
Para entendermos melhor o que significa isso, pense em uma pilha de livros ou de pratos.
Ao empilharmos livros, por exemplo, o primeiro livro a ser retirado da pilha é
obrigatoriamente o último que foi colocado; se tentarmos retirar o último livro da pilha, tudo
vai desabar. Ou seja, o último livro a ser empilhado é o primeiro a ser retirado.
Abstraindo este princípio para código, percebe-se que há apenas dois métodos possíveis
para manipular os dados de uma pilha: 1) inserir um elemento no topo da pilha e 2) remover
um elemento do topo da pilha.
Ao contrário do array, as linguagens de programação normalmente não têm métodos
nativos para criação e manipulação de pilhas. Porém, é possível usar métodos de array para a
implementação de pilhas.
Usos
O caso de uso mais famoso da pilha é a call stack ou pilha de chamadas de um programa
que está sendo executado: a ordem de execução dos processos “chamados” por um programa
via funções ou métodos obedece ao princípio de pilha.
Outro recurso que utilizamos todos os dias e que utiliza pilhas para funcionar é o mecanismo
de “voltar” e “avançar” páginas dos navegadores (representado normalmente por setas para a
esquerda e direita). Os endereços visitados vão se empilhando; ao chamarmos a função de
“voltar”, o último endereço visitado - ou seja, o que está no topo da pilha - é o primeiro a ser
visualizado.
Fila
A fila tem uma estrutura semelhante à pilha, porém com uma diferença conceitual
importante: o paradigma por trás da fila é o FIFO - First In, First Out, ou “o primeiro a entrar
é o primeiro a sair”, em tradução livre.
Pense em uma fila de bilheteria, por exemplo. A pessoa que chegou antes vai ser atendida
(e comprar seu ingresso) antes de quem chegou depois e ficou atrás na fila. A fila como
estrutura de dados segue o mesmo princípio.
Sendo assim, também há somente duas formas de se manipular uma fila: 1) Inserir um
elemento no final da fila e 2) remover um elemento do início da fila.