Sobre Fila Dinâmica em C
Olá, pessoal! Tenho uma dúvida quanto a implementação de Fila Dinâmica em C. Gostaria de saber como implemento o código para EXIBIR os dados guardados na fila de acordo com as funções que já possuo. Se for possível me explicar como funciona cada função, seria de grande ajuda. Segue abaixo o código de fila:
#include<stdio.h>
#define TRUE 1
#define FALSE 0
struct no
{
int dado;
struct no *prox;
};
typedef struct
{
struct no *inicio;
struct no *fim;
} fila;
int inserir(fila *q, int d)
{
struct no *aux;
aux = (struct no *)malloc(sizeof(struct no));
if(aux==NULL)
return(FALSE);
aux->dado=d;
aux->prox=NULL;
if(q->inicio==NULL)
q->inicio=aux;
if(q->fim!=NULL)
q->fim->prox=aux;
q->fim=aux;
return(TRUE);
}
int remover(fila *q, int *d)
{
struct no *aux;
if(q->inicio==NULL)
return(FALSE);
aux=q->inicio;
q->inicio=aux->prox;
*d=aux->dado;
free(aux);
return(TRUE);
}
void create(fila *q)
{
q->inicio=NULL;
q->fim=NULL;
}
Soluções para a tarefa
Respondido por
2
Boa tarde!
Vou deixar um código e comentar o que ele faz, com suas funções:
#include<stdio.h>
int main(void){
fila *q;
int dado;
create(q); // aqui cria a fila vazia
scanf("%d", &dado); // aqui le um valor. se este valor for zero para a leitura
while(dado != 0){
inserir(q, dado); // aqui insere o valor na fila
scanf("%d", &dado); // aqui le outro dado
}
while(remover(q, &dado)) { // enquanto tiver dados na fila ira remover
printf("%d\n", dado); // aqui imprime
}
return 0;
}
O importante da fila é que ela remove os valores na ordem que foi lido.
Então, se leu 1, 2, 3, 4, 5, 0 (precisa deste zero para indicar que não irá ler mais nenhum valor) irá remover na mesma sequência, 1, 2, 3, 4, 5
Espero ter ajudado!
Vou deixar um código e comentar o que ele faz, com suas funções:
#include<stdio.h>
int main(void){
fila *q;
int dado;
create(q); // aqui cria a fila vazia
scanf("%d", &dado); // aqui le um valor. se este valor for zero para a leitura
while(dado != 0){
inserir(q, dado); // aqui insere o valor na fila
scanf("%d", &dado); // aqui le outro dado
}
while(remover(q, &dado)) { // enquanto tiver dados na fila ira remover
printf("%d\n", dado); // aqui imprime
}
return 0;
}
O importante da fila é que ela remove os valores na ordem que foi lido.
Então, se leu 1, 2, 3, 4, 5, 0 (precisa deste zero para indicar que não irá ler mais nenhum valor) irá remover na mesma sequência, 1, 2, 3, 4, 5
Espero ter ajudado!
Perguntas interessantes