Definição – o que Stack significa?
Uma pilha é uma estrutura conceitual que consiste em um conjunto de elementos homogêneos e é baseada no princípio do último a entrar, primeiro a sair (LIFO). É um tipo de dados abstratos comumente usado com duas operações principais, ou seja, push e pop. O push e o pop são executados no elemento superior, que é o item adicionado mais recentemente à pilha. A operação push adiciona um elemento à pilha enquanto a operação pop remove um elemento da posição superior. O conceito de pilha é usado na programação e organização da memória em computadores.
Definirtec explica Stack
Uma pilha representa uma sequência de objetos ou elementos em um formato de estrutura de dados linear. A pilha consiste em um fundo delimitado e todas as operações são realizadas na posição superior. Sempre que um elemento é adicionado à pilha pela operação push, o valor superior é incrementado em um e, quando um elemento é retirado da pilha, o valor superior diminui em um. Um ponteiro para a posição superior da pilha também é conhecido como ponteiro da pilha.
Uma pilha pode ter um tamanho fixo ou pode ter implementação dinâmica em que o tamanho pode ser alterado. No caso de pilhas de capacidade limitada, tentar adicionar um elemento a uma pilha já cheia causa uma exceção de estouro de pilha. Da mesma forma, uma condição em que uma operação pop tenta remover um elemento de uma pilha já vazia é conhecida como underflow.
Uma pilha é considerada uma estrutura de dados restrita, pois apenas um número limitado de operações é permitido. Além das operações push e pop, certas implementações podem permitir operações avançadas, como:
- Peek – Veja o primeiro item da pilha.
- Duplicar – Copie o valor do item superior em uma variável e coloque-o de volta na pilha.
- Trocar – Troca os dois itens superiores da pilha.
- Girar – mova os elementos superiores da pilha conforme especificado por um número ou mova-os em rotação.
As implementações de software do conceito de pilha são feitas usando matrizes e listas vinculadas onde a posição superior é rastreada usando uma variável ou ponteiro de cabeçalho, respectivamente. Muitas linguagens de programação fornecem recursos integrados para dar suporte à implementação de pilha.
As pilhas de hardware são implementadas com o propósito de alocação de memória e acesso usando origem e tamanho fixos. Os registradores da pilha são usados para armazenar o valor do ponteiro da pilha.