aula 236

Como inserir um elemento em uma estrutura de dados do tipo FILA?

Na aula de hoje, dando continuidade ao nosso Curso de Programação C, vamos aprender como inserir um elemento em uma estrutura de dados do tipo FILA.

O primeiro passo é criar a nossa estrutura Nó. Como já foi dito, a estrutura Nó é exatamente igual ao Nó que já utilizamos na estrutura de dados pilha. Nosso Nó terá dois campos, um campo de informação e um campo ponteiro para o Nó seguinte, assim:

// estrutura nó utilizada na construção da nossa fila

typedef struct no{
    int valor;
    struct no *proximo;
}No;

Neste exemplo o campo de informação é apenas um número inteiro. Contudo, poderíamos ter diversos campos de tipos diferentes incluindo outras estruturas.

Para inserir um Nó em uma fila, como vimos na aula teórica, toda inserção é feita no final da fila. Precisamos receber um ponteiro pra ponteiro para nossa fila e o elemento a ser inserido. Se a fila estiver vazia (NULL) então vamos inserir o primeiro elemento, alterando o conteúdo da variável declarada na função main. Contudo, caso a pilha não esteja vazia, então precisamos caminhar até o final da fila e inserir o novo nó após o último nó da fila, assim:

// procedimento para inserir um novo elemento na fila

void inserir_na_fila(No **fila, int num){
    No *aux, *novo = malloc(sizeof(No));
    if(novo){
        novo->valor = num;
        novo->proximo = NULL;
        if(*fila == NULL) // se a fila estiver vazia
            *fila = novo;
        else{
            aux = *fila;
            while(aux->proximo) // caminha até o final da fila
                aux = aux->proximo;
            aux->proximo = novo;
        }
    }
    else
        printf("\nErro ao alocar memoria.\n");
}

Código em C para inserir um novo elemento na estrutura de dados fila

/*
        Código escrito por Wagner Gaspar
        Julho de 2021

        Aula 236: Inserindo um Elemento na Estrutura de Dados FILA
        FIFO - First-In, First-Out - Primeiro a Entrar, Primeiro a Sair
*/

typedef struct no{
    int valor;
    struct no *proximo;
}No;

void inserir_na_fila(No **fila, int num){
    No *aux, *novo = malloc(sizeof(No));
    if(novo){
        novo->valor = num;
        novo->proximo = NULL;
        if(*fila == NULL)
            *fila = novo;
        else{
            aux = *fila;
            while(aux->proximo)
                aux = aux->proximo;
            aux->proximo = novo;
        }
    }
    else
        printf("\nErro ao alocar memoria.\n");
}

int main(){
    No *fila = NULL;

    inserir_na_fila(&fila, 10);

    return 0;
}

Deixe um comentário

seis + 19 =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.