Fila em C

Publicado por Perfil removido (última atualização em 05/07/2011)

[ Hits: 6.308 ]

Download 5045.fila.c




Fila alocada dinamicamente, em que o usuário tem a opção de inserir, remover ou mostrar os valores.

  



Esconder código-fonte

#include<stdlib.h>
#include<stdio.h>

typedef struct campo {
   int valor;
   struct campo *prox;
   } *ptrCampo;

void iniciaFila(ptrCampo *l) {
*l = NULL;
}   
/*=============inserção dos valores===================*/   
void insere(ptrCampo *l, int numero) {
ptrCampo n = (ptrCampo)malloc(sizeof(struct campo));
(*n).valor = numero;

if(*l) {
(*n).prox = (**l).prox;
(**l).prox = n;
}
else
   (*n).prox = n;
*l = n;
}   
/*=================retirada dos valores===============*/
void retira(ptrCampo *l) {
ptrCampo aux;

if(*l == (**l).prox) {
   aux = *l;
   free(aux);
   *l = NULL;
   }
   else {
      aux = (**l).prox;
      (**l).prox = (*aux).prox;
      free(aux);
      }
}
/*==============impressão dos valores=====================*/
void imprime(struct campo l) {
ptrCampo aux;
aux = l.prox;

printf("Fila: [");
printf("%d", (*aux).valor);

while((*aux).prox != l.prox) {
   aux = (*aux).prox;
   printf("%5d", (*aux).valor);
   }
printf("]\n");
}
/*====================================================*/
main() {
ptrCampo f;
int opcao;
iniciaFila(&f);

printf("1: Inserir\t2: Remover\t3: Mostrar\t0: Sair\nOpção: ");
scanf("%d", &opcao);

while(opcao) {
   switch(opcao) {
      case 1: {
         int s;
         printf("Valor: ");
         scanf("%d", &s);
         insere(&f, s);
         break;
      }
      case 2:
         if(f)
            retira(&f);
         else
            printf("Fila vazia!\n");
         break;
      case 3: 
         if(f)
            imprime(*f);
         else
            printf("Fila vazia!\n");
         break;
      default:
         printf("Opção inválida!\n");
      }
printf("Opção: ");
scanf("%d", &opcao);
}
}
/*gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3*/

Scripts recomendados

Função "Temporizador" em C

Tabuada com QT4

Cálculo de logaritmo de um número por um terceiro método em C

Conversão de Decimal para Binário

3º EP - Poli USP - Angry Birds (angry bixos)


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts