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
 
miguelneto profile image
Miguel Neto

Bem informativo e direto :) Parábens!

Collapse
 
alexreis profile image
Alex Reis

Obrigado cara!