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; }