DEV Community

Alex Reis
Alex Reis

Posted on

2 1 1 1 1

Estruturas de Dados: Fila

É um tipo especial de lista linear com as mesmas priprieadades, mas com a restrição de que a inserção ocorre no final e remoção no começo da fila.

Alocação Sequencial

São necessários dois ponteiros: início de fila (f) e retaguarda (r). Para a adição de um elemento, move-se o ponteiro r; para a retirada, move-se o ponteiro f. A situação de fila vazia é representada por f = r = 0.

À medida que os ponteiros são incrementados na memória disponível, a fila “se move”, o que pode dar origem à falsa impressão de memória esgotada. Para eliminar esse problema, consideram-se os M nós alocados como se estivessem em círculo, onde F[1] segue F[M].

A inicialização de *f e r é f = r = 0.

Inserção na fila

    prov := r mod M + 1
    se prov != f então
        r := prov
        F[r] := novo-valor
        se f == 0 então
            f := 1
    senão *overflow*
Enter fullscreen mode Exit fullscreen mode

Remoção

    se f != 0 então
        valor-recuperado := F[f]
        se f == r então
            f := r := 0
        senão
            f := f mod M + 1
    senão *underflow*
Enter fullscreen mode Exit fullscreen mode

Operações de tempo constante.

Alocação Encadeada

Filas exigem duas variáveis do tipo ponteiro: inicio, que aponta para o primeiro nó da lista, e fim, que aponta para o último. Na fila vazia, ambos apontam para nulo.

Inserção

    // alocar pt
    pt->.info := novo-valor
    pt->.prox := nulo
    se fim != nulo então
        fim->.prox := pt
    senão
        inicio := pt
    fim := pt
Enter fullscreen mode Exit fullscreen mode

Remoção

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

A complexidade para essas operações é constante, ou seja, O(1).

Referência

Livro Estruturas de Dados e seus Algoritmos

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Immerse yourself in a wealth of knowledge with this piece, supported by the inclusive DEV Community—every developer, no matter where they are in their journey, is invited to contribute to our collective wisdom.

A simple “thank you” goes a long way—express your gratitude below in the comments!

Gathering insights enriches our journey on DEV and fortifies our community ties. Did you find this article valuable? Taking a moment to thank the author can have a significant impact.

Okay