Trabalho Filas C
Por: ismael.rodrigues • 11/5/2015 • Trabalho acadêmico • 689 Palavras (3 Páginas) • 282 Visualizações
/* ***************************************************
* Escrever um procedimento que retira os valores pares de uma fila. Importante:
* 1) Não utilizar estrutura auxiliar !! Utilizar a mesma fila.
* 2) Fazer o procedimento em C para apresentar e fazer o programa principal que chame e teste este procedimento.
*
***************************************************** */
#include <stdio.h>
#include <malloc.h>
// Definição da Estrutura de Fila.
struct Fila {
int dado;
struct Fila *proximo;
};
// Função que adiciona um item na fila.
int enfileira(struct Fila **inicio, struct Fila **fim, int valor){
struct Fila *fila; // Define o novo nodo.
fila = malloc(sizeof(struct Fila)); // Aloca o novo nodo na memória.
// Verifica se a alocação deu certo
if(fila != NULL) {
fila->dado = valor;
fila->proximo = NULL;
if(*fim != NULL)
(*fim)->proximo = fila;
else
*inicio = fila;
*fim = fila;
// Tudo certo, retorna 1;
return 1;
} else return 0; // Deu pau, retorna 0 para erro.
}
// Função que conta os items da fila.
int conta_fila(struct Fila **fila){
struct Fila *aux;
aux = *fila;
int total = 0;
// Enquanto não for nulo.
while(aux != NULL) {
total += 1; // Conta e pega o próximo.
aux = aux->proximo;
}
return total;
}
// Função que verifica se a fila tem dados.
int testa_fila(struct Fila **inicio) {
if(inicio == NULL || (*inicio)->proximo == NULL)
return 1; // Fila Vazia.
return 0; // Fila Com Dados
}
// Função que remove os pares.
void remove_pares(struct Fila **inicio, struct Fila **fim) {
// Aqui vai a lógica de remoção dos pares.
struct Fila *aux, *p;
aux = *inicio;
while (aux != NULL){
if (aux->dado % 2 == 0){
p = aux;
if (*inicio == aux){
p = aux->proximo;
*inicio = p;
}
if (*fim == aux){
*fim = p;
aux = aux->proximo;
free (*p);
} else {
p = aux;
aux = aux->proximo;
}
}
}
}
// Função que mostra os dados da
...