Índice:
Definição - O que significa Stack?
Uma pilha é uma estrutura conceitual que consiste em um conjunto de elementos homogêneos e baseia-se no princípio LIFO (last in first out). É um tipo de dados abstratos comumente usado com duas operações principais, a saber, push e pop. Push e 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.
Techopedia 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 é decrementado em um. Um ponteiro para a posição superior da pilha também é conhecido como ponteiro da pilha.
Uma pilha pode ter tamanho fixo ou implementação dinâmica em que o tamanho pode mudar. 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 fluxo insuficiente.
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:
- Espiar - Veja o item mais alto da pilha.
- Duplicar - copie o valor do item superior em uma variável e empurre-o de volta para a pilha.
- Trocar - Troque os dois itens mais altos da pilha.
- Girar - Mova os elementos mais altos da pilha, conforme especificado por um número ou mova-os de maneira rotativa.
As implementações de software do conceito de pilha são feitas usando matrizes e listas vinculadas onde a posição superior é rastreada usando um ponteiro de variável ou cabeçalho, respectivamente. Muitas linguagens de programação fornecem recursos internos para suportar a implementação da pilha.
As pilhas de hardware são implementadas com a finalidade de alocação e acesso à memória usando uma origem e tamanho fixos. Registradores de pilha são usados para armazenar o valor do ponteiro da pilha.
