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