Advertisement
edumaxsantos

Fila 2

May 28th, 2015
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.00 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct no
  5. {
  6.     float info;
  7.     struct no* prox;
  8. } NoLista;
  9.  
  10. typedef struct fila
  11. {
  12.     NoLista *ini;
  13.     NoLista *fim;
  14. } Fila;
  15.  
  16. Fila *criarFila()
  17. {
  18.     Fila *f = malloc(sizeof(Fila));
  19.     f->ini = f->fim = NULL;
  20.     return f;
  21. }
  22.  
  23. int estaVazia(Fila *f)
  24. {
  25.     return (f->ini == NULL);
  26. }
  27.  
  28. void inserir(Fila *f, float v)
  29. {
  30.     NoLista *novo = malloc(sizeof(NoLista));
  31.     if (novo != NULL)
  32.     {
  33.    
  34.         novo->info = v;
  35.         novo->prox = NULL;
  36.         if (f->fim != NULL)
  37.             f->fim->prox = novo;
  38.            
  39.         else
  40.             f->ini = novo;
  41.         f->fim = novo;
  42.     }
  43.     else
  44.         printf("ERROR!\n");
  45. }
  46.  
  47. float remover(Fila *f)
  48. {
  49.     if(!estaVazia(f))
  50.     {
  51.         NoLista *p = f->ini;
  52.         float n = p->info;
  53.         f->ini = p->prox;
  54.         if (f->ini == NULL)
  55.             f->fim = NULL;
  56.         free(p);
  57.         return n;
  58.     }
  59.     else
  60.     {
  61.         printf("Esta vazio!\n");
  62.         f->ini = NULL;
  63.     }
  64.     return -99.99;
  65. }
  66.  
  67. void furaFila(Fila *f, float v)
  68. {
  69.     NoLista *p, *ant = NULL;
  70.     for (p = f->ini; p->prox != NULL && p->info != v; p = p->prox)
  71.         ant = p;
  72.    
  73.     if(p->info == v)
  74.     {
  75.         if (ant != NULL)
  76.         {
  77.             ant->prox = p->prox;
  78.             p->prox = f->ini;
  79.             f->ini = p;
  80.         }
  81.     }
  82.     else
  83.         printf("Elemento nao encontrado!\n");
  84. }
  85. void imprimir(Fila *f)
  86. {
  87.     if (f->ini != NULL)
  88.     {
  89.         NoLista *l;
  90.         for(l = f->ini; l != NULL; l = l->prox)
  91.             printf("%.2f\n", l->info);
  92.     }
  93.     else
  94.         printf("Esta vazia!\n");
  95. }
  96.  
  97. void liberarLista(Fila *f)
  98. {
  99.     NoLista *no = f->ini;
  100.     while(no != NULL)
  101.     {
  102.         //NoLista *temp = no->prox;
  103.         f->ini = no->prox;
  104.         free(no);
  105.         no = f->ini;
  106.     }
  107.     free(no);
  108. }
  109.  
  110. int main()
  111. {
  112.     Fila *f = criarFila();
  113.     printf("Esta vazio? %s\n", (estaVazia(f) ? "Sim" : "Nao"));
  114.     inserir(f,  1);
  115.     inserir(f,  2);
  116.     inserir(f,  3);
  117.     inserir(f,  4);
  118.     imprimir(f);
  119.     printf("Elemento removido: %.2f\n", remover(f));
  120.     imprimir(f);
  121.     printf("Furar fila: \n");
  122.     printf("Digite um valor para furar fila: ");
  123.     float num;
  124.     scanf("%f", &num);
  125.     furaFila(f, num);
  126.     imprimir(f);
  127.     liberarLista(f);
  128.    
  129.     return 0;
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement