DEV Community

Alex Reis
Alex Reis

Posted on

Estruturas de Dados: Pilha

É um tipo especial de lista linear, com a restrição que inserções e remoções ocorrem na mesma extremidade.

Alocação Sequencial

Temos um ponteiro chamado topo para indicar o topo da pilha,ou seja, o elemento da extremidade. Os algoritmos abaixo implementam inserção e remoção na pilha, considerando uma mmória de M posições.

Inserção na pilha

 se topo != M então topo := topo+1 P[topo] := novo-valor senão *overflow* 
Enter fullscreen mode Exit fullscreen mode

Remoção na pilha

 se topo != 0 então valor-recuperado := P[topo] topo := topo - 1 senão *underflow* 
Enter fullscreen mode Exit fullscreen mode

A complexidade das operações é O(1).

Alocação Encadeada

Considerando-se listas simplesmente encadeadas (sem nó-cabeça), o topo da pilha é o primeiro nó da lista, apontado por uma variável ponteiro topo. Se a pilha estiver vazia então topo = nulo.

Inserção

 // alocar pt pt->.info := novo-valor pt->.prox := topo topo := pt 
Enter fullscreen mode Exit fullscreen mode

Remoção

 se topo != nulo então pt := topo topo := topo->.prox valor-recuperado := pt->.info // desalocar pt senão *underflow* 
Enter fullscreen mode Exit fullscreen mode

As complexidades dessas operações são constantes, ou seja, O(1).

Top comments (2)

Collapse
 
alexreis profile image
Alex Reis

Obrigado cara!