Estruturas de Dados: O que são Pilhas

O que são Pilhas (Stacks)

Uma Pilha é uma estrutura de dados que permite o acesso a somente um item de dados armazenado - o último item que foi inserido na estrutura (item do topo). Esse item pode ser lido ou removido. Caso seja removido, teremos acesso ao item imediatamente anterior a elem que se torna automaticamente o último item da pilha, e assim sucessivamente, até que a estrutura esteja vazia.

Podemos implementar pilhas de algumas formas, como por meio de arrays ou com o uso de ADTs (Abstract Data Types / Tipos de Dados Abstratos). Estudaremos ambas as formas nestas lições.

Como funciona um Pilha

Para entender como uma pilha funciona, faremos uma analogia com o mundo real.

Imagine uma pilha de pratos na cozinha. Se quisermos utilizar um prato, pegamos um do topo desta pilha (último prato). Se necessitarmos de outro, pegamos o próximo da pilha (que agora é o último), e assim por diante.

Quando um prato é lavado, após seu uso, pode ser recolocado novamente na pilha de pratos, sempre no topo. Esse prato recém-colocado na pilha passa a ser o último, e o primeiro que será retirado quando precisarmos usar um prato novamente.

Essa é a ideia geral de uma estrutura de dados do tipo pilha. Nela, os dados são inseridos na pilha (empilhados), e acessados em ordem inversa (o último a ser inserido é sempre o primeiro a ser utilizado). Colocar um elemento no topo de uma pilha é uma operação que recebe um nome especial: push. Já a remoção de um elemento do topo da pilha é uma operação denominada pop.

Por conta deste modo de operação, as pilhas são classificadas como estruturas de dados Last-In, First-Out - LIFO, "último a entrar é o primeiro a sair", pois o último item inserido na pilha é o primeiro a ser removido.

A figura a seguir ilustra uma pilha contendo valores numéricos, e seu topo assinalado:

Pilha em estruturas de dados

Operações Push e Pop

As duas principais operações realizadas sobre uma pilha são as operações push e pop.

A operação push é executada para adicionar um elemento ao topo de uma pilha.

A operação pop é executada para retirar um elemento do topo de uma pilha. O elemento retirado é sempre o último que foi adicionado com a operação push.

A figura a seguir ilustra a operação push em uma pilha, sendo executada duas vezes para permitir a inserção de dois novos valores em uma pilha já existente:

Operação push() em uma pilha

Operação push em uma pilha

Já a figura a seguir ilustra a operação pop sendo efetuada sobre a pilha, de modo a remover elementos. Note que se trata de uma operação exatamente inversa à operação push:

Operação pop em uma pilha

Operação pop em uma pilha

Mais sobre pilhas

As pilhas, no geral, são estruturas de dados de tamanho pequeno. Com apenas alguns itens de dados, uma pilha pode ser útil na realização de diversas tarefas computacionais.

Além das operações push e pop, existem algumas outras operações comuns realizadas em pilhas, como peek, isFull e isEmpty. A seguir temos uma breve descrição de cada uma:

  • peek - Consiste na leitura do valor armazenado no topo da pilha, sem no entanto removê-lo.
  • isFull - Função utilizada para verificar se uma pilha está cheia (ou seja, se não é mais possível armazenar itens)
  • isEmpty - Função que verifica se uma pilha está vazia - ou seja, se não é possível continuar a remover itens.

Anterior: O que são Estruturas de Dados

Próximo: Como implementar uma pilha em linguagem C usando Arrays.

Sobre Fábio dos Reis (1158 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Astronomia, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*