Fila em C

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

[ Hits: 6.397 ]

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

1o. joguinho Labirinto (com graficos).c

Classe para manipulação e conversão de datas para std::string em C++

Derrubando SyGate Profissional Firewall !

Jogo defutebol simples (com gráficos)

Ponteiro para Ponteiro para Ponteiro


  

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