Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
Como eu faço a seguinte função
Implemente, utilizando apenas as funções da biblioteca fila.h, uma função que receba uma fila e a inverta
Biblioteca fila.h
struct lista {
float info;
struct lista* prox;
};
typedef struct lista Lista;
struct fila{
Lista* ini;
Lista* fim;
};
typedef struct fila Fila;
Fila* fila_cria(void) {
Fila* f = (Fila*)malloc(sizeof(Fila));
f->ini = f->fim = NULL;
return f;
}
int fila_vazia (Fila* f) {
return (f->ini == NULL);
}
void fila_insere (Fila* f, float v) {
Lista* n = (Lista*)malloc(sizeof(Lista));
n->info = v;
n->prox = NULL;
if (f->fim != NULL)
f->fim->prox = n;
else
f->ini = n;
f->fim = n;
}
float fila_retira (Fila* f) {
Lista* t;
float v;
if(fila_vazia(f)) {
printf("Fila vazia.\n");
getch();
exit(1);
}
t = f->ini;
v = t->info;
f->ini = t->prox;
if (f->ini == NULL)
f->fim = NULL;
free(t);
return v;
}
void fila_libera (Fila* f) {
Lista* q = f->ini;
while (q != NULL) {
Lista* t = q->prox;
free(q);
q = t;
}
free(f);
}
void fila_imprime (Fila* f) {
Lista* q;
for (q = f->ini; q != NULL; q = q->prox)
printf("%.1f\n", q->info);
}
Eu não estou conseguindo implementar esta função alguém poderia me ajudar?
fila.c
Fila inverte_fila (Fila E1){
Fila* f2 = fila_cria();
Fila* f3 = fila_cria();
Fila* f4 = fila_cria();
fila_insere(f2, fila_retira(E1));
fila_insere(f3, fila_retira(E1));
fila_insere(f4, fila_retira(E1));
fila_insere(f4, fila_retira(f3));
fila_insere(f4, fila_retira(f2));
return f4;
}
A função que eu criei e para valores fixos quero para valores não fixos
alguém poderia me ajudar?
Carregando comentários...