Fila em C

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

[ Hits: 5.948 ]

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

Simulador de Escalonamento de Processos

Arvores Red Black

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

Tipos de Dados Abstrato - TDA - Vetor

Biblioteca math.h


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts