Advertisement
FhilipeCrash

estrutura_lista

May 17th, 2022
544
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct Fila {
  5.  
  6.     int capacidade;
  7.     float *dados;
  8.     int primeiro;
  9.     int ultimo;
  10.     int nItens;
  11.  
  12. };
  13.  
  14. void criarFila( struct Fila *f, int c ) {
  15.  
  16.     f->capacidade = c;
  17.     f->dados = (float*) malloc (f->capacidade * sizeof(float));
  18.     f->primeiro = 0;
  19.     f->ultimo = -1;
  20.     f->nItens = 0;
  21.  
  22. }
  23.  
  24. void inserir(struct Fila *f, int v) {
  25.  
  26.     if(f->ultimo == f->capacidade-1)
  27.         f->ultimo = -1;
  28.  
  29.     f->ultimo++;
  30.     f->dados[f->ultimo] = v; // incrementa ultimo e insere
  31.     f->nItens++; // mais um item inserido
  32.     mostrarFila(f);
  33.  
  34. }
  35.  
  36. int remover( struct Fila *f ) { // pega o item do começo da fila
  37.  
  38.     int temp = f->dados[f->primeiro++]; // pega o valor e incrementa o primeiro
  39.  
  40.     if(f->primeiro == f->capacidade)
  41.         f->primeiro = 0;
  42.  
  43.     f->nItens--;
  44.     mostrarFila(f);
  45.     // um item retirado
  46.     return temp;
  47.  
  48. }
  49.  
  50. int estaVazia( struct Fila *f ) { // retorna verdadeiro se a fila está vazia
  51.  
  52.     return (f->nItens==0);
  53.  
  54. }
  55.  
  56. int estaCheia( struct Fila *f ) { // retorna verdadeiro se a fila está cheia
  57.  
  58.     return (f->nItens == f->capacidade);
  59. }
  60.  
  61. void mostrarFila(struct Fila *f){
  62.  
  63.     int cont, i;
  64.  
  65.     for ( cont=0, i= f->primeiro; cont < f->nItens; cont++){
  66.  
  67.         printf("%.2f\t",f->dados[i++]);
  68.  
  69.         if (i == f->capacidade)
  70.             i=0;
  71.  
  72.     }
  73.     printf("\n\n");
  74.  
  75. }
  76.  
  77. void main () {
  78.  
  79.     int opcao, capa;
  80.     float valor;
  81.     struct Fila umaFila;
  82.  
  83.     // cria a fila
  84.     printf("\nCapacidade da fila? ");
  85.     scanf("%d",&capa);
  86.     criarFila(&umaFila, capa);
  87.  
  88.     // apresenta menu
  89.     while( 1 ){
  90.  
  91.         printf("\n1 - Inserir elemento\n2 - Remover elemento\n3 - Mostrar Fila\n0 - Sair\n\nOpcao? ");
  92.         scanf("%d", &opcao);
  93.  
  94.         switch(opcao){
  95.  
  96.             case 0: exit(0);
  97.  
  98.             case 1: // insere elemento
  99.                 if (estaCheia(&umaFila)){
  100.  
  101.                     printf("\nFila Cheia!!!\n\n");
  102.  
  103.                 }
  104.                 else {
  105.  
  106.                     printf("\nValor do elemento a ser inserido? ");
  107.                     scanf("%f", &valor);
  108.                     inserir(&umaFila,valor);
  109.  
  110.                 }
  111.  
  112.                 break;
  113.  
  114.             case 2: // remove elemento
  115.                 if (estaVazia(&umaFila)){
  116.  
  117.                     printf("\nFila vazia!!!\n\n");
  118.  
  119.                 }
  120.                 else {
  121.  
  122.                     valor = remover(&umaFila);
  123.                     printf("\n%1f removido com sucesso\n\n", valor) ;
  124.  
  125.                 }
  126.                 break;
  127.  
  128.                 case 3: // mostrar fila
  129.                     if (estaVazia(&umaFila)){
  130.  
  131.                         printf("\nFila vazia!!!\n\n");
  132.  
  133.                     }
  134.                     else {
  135.  
  136.                         printf("\nConteudo da fila => ");
  137.                         mostrarFila(&umaFila);
  138.  
  139.                     }
  140.                     break;
  141.  
  142.                 default:
  143.                     printf("\nOpcao Invalida\n\n");
  144.  
  145.         }
  146.     }
  147. }
Advertisement
RAW Paste Data Copied
Advertisement