O professor passou uns exercicios aqui, mas não to ocnseguindo fazer nem um.. só fiz a "base" do exercicio, qualquer um que me ajudarem a fazer já ta bom, já é uma grande ajuda. 
a lista de exercicios: 
  
  
LISTA FILAS
 
1)CRIE UMA FUNÇAO QUE não DEIXE ENFILEIRAR UM ELEMENTO JÁ EXISTENTE
 
EX: 8 -> 4 -> 10
QUERO INSERIR O 4.
A FUNÇAO não DEIXARÁ.
 
2)CRIE UMA FUNÇAO QUE TROCA O ATUAL FIM DA FILA PELO INICIO.
 
3)CRIE UMA FUNÇAO QUE INVERTA TODA A SEQUENCIA DA FILA.
 
4)CRIE UMA FILA DUPLAMENTE ENCADEADA. FAÇA AS OPERAÇOES DE ENFILEIRAR E DESENFILEIRAR.
 
5)CRIE UMA FILA COM PRIORIDADE. (MAIOR PRIORIDADE = 0)
 
EXEMPLO
 
VALOR2        -->   VALOR3        -->VALOR5
PRIORIDADE:0        PRIORIDADE:2     PRIORIDADE:1
 
 
6)CRIE UMA FUNÇAO QUE DELETA OS ELEMENTOS IMPARES DA FILA, REORGANIZANDO A MESMA.
 
o que eu tenho até agora:
 
#include <stdio.h>
#include <stdlib.h>
struct no
{
    struct no* proximo;
    int valor;
};
typedef struct no No;
No* inicio = NULL;
No* fim = NULL;
void pegainicio(){
    if (inicio==NULL){
    printf("\n\nInicio ta vazio.");
    }
    else{
printf("\n\n%d", inicio->valor);
    }
}
void pegafim(){
if(fim==NULL){
printf("\n\nFim vazio.");
}
else{
printf("\n\n%d", fim->valor);
}
}
void main()
{
    int a;
    while(a!=0)
    {
        printf("\nDigite um numero:");
        scanf("%d", &a);
        if(a!=0)
        {
            enfileirar(a);
        }
    }
    pegainicio();
    pegafim();
    desenfileirar();
    pegainicio();
    pegafim();
}
//CODIGO ENFILEIRAR
void enfileirar(int elemento)
{
    No* novo=(No*)malloc(sizeof(No));
    novo->valor=elemento;
    novo->proximo=NULL;
    if (inicio==fim)
    {
        if (inicio==NULL)
        {
            inicio=fim=novo;
        }
        else
        {
            inicio->proximo=novo;
            fim=novo;
        }
    }
    else{
        fim->proximo =novo;
        fim=novo;
    }
}
//CODIGO DESENFILEIRAR
void desenfileirar()
{
/*primeiro teste - ver se ta vazia*/
/*inicio e fim tem q ser NULL*/
    if (inicio==NULL)
    {
        printf("Fila vazia.");
    }
    else /*1 ou n elementos*/
    {
        No* aux=inicio->proximo;
        free(inicio);
        inicio=aux;
        if(inicio==NULL)
        {
            fim=NULL;
        }
    }
}