Advertisement
justaCprogrammer

listencaded.c

Jun 19th, 2022
807
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.50 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct st_next
  5. {
  6. int value;
  7.  struct st_next *next;
  8. };
  9.  
  10. typedef struct st_next lace;
  11.  
  12. int voided (lace * reader)
  13. {
  14.     if(reader -> next == NULL )
  15.     {
  16.         return 1;
  17.     }else
  18.     {
  19.         return 0;
  20.     }
  21. }
  22.  void initial (lace * reader)
  23.  {
  24.     reader -> next == NULL;
  25.  }
  26.  
  27.  void freeUsage (lace * reader)
  28.  {
  29.      if(!voided(reader))
  30.         {
  31.         lace * nextEl, *actual;
  32.         actual = reader -> next;
  33.         while(actual != NULL)
  34.             {
  35.             nextEl = actual -> next;
  36.             free(actual);
  37.             actual = nextEl;
  38.             }
  39.      }
  40.  }
  41.  
  42.  void showList (lace * reader)
  43.  {
  44.      if(voided(reader))
  45.         {
  46.             printf("Lista vazia,adicione algo nela antes de executar esse comando!\n");
  47.         }
  48.             lace *tmp;
  49.             tmp = reader -> next;
  50.             while(tmp != NULL)
  51.                 {
  52.                 printf("%d\n",tmp->value);
  53.                     tmp = tmp ->next;
  54.                 }
  55.  }
  56.  
  57.  void addListInitial (lace * reader)
  58.  {
  59.     lace *newEl = (lace *)malloc(sizeof(lace));
  60.     if(!newEl)
  61.     {
  62.         printf("Sem espaco! Libere um pouco antes de executar essa opcao!\n");
  63.         exit(1);
  64.     }
  65.  
  66.         printf("Digite o valor\n");
  67.         scanf("%d",&newEl -> value);
  68.  
  69.         lace *oldTop = reader -> next;
  70.  
  71.         reader ->next = newEl;
  72.         newEl -> next = oldTop;
  73.  
  74.  }
  75.  
  76.  void addListEnd (lace * reader)
  77.  {
  78.      lace * newEl = (lace*)malloc(sizeof(lace));
  79.  
  80.      if(!newEl)
  81.      {
  82.          printf("Sem Memoria disponivel!\n");
  83.          exit(1);
  84.      }
  85.      printf("Digite o valor\n");
  86.      scanf("%d",&newEl -> value);
  87.      newEl -> next = NULL;
  88.  
  89.      if(voided(reader))
  90.         {
  91.         reader ->next = newEl;
  92.         }else
  93.         {
  94.             lace *tmp = reader ->next;
  95.             while(tmp->next != NULL)
  96.             {
  97.                 tmp = tmp->next;
  98.             }
  99.             tmp -> next = newEl;
  100.         }
  101.  
  102.  }
  103.  
  104.  void opc(lace * reader, int opc)
  105.  {
  106.     switch(opc)
  107.     {
  108.     case 1:
  109.         initial(reader);
  110.         break;
  111.  
  112.     case 2:
  113.         addListInitial(reader);
  114.         break;
  115.  
  116.     case 3:
  117.        addListEnd(reader);
  118.         break;
  119.  
  120.     case 4:
  121.          showList(reader);
  122.         break;
  123.  
  124.     case 5:
  125.         freeUsage(reader);
  126.         printf("Programa finalizado\n");
  127.         break;
  128.  
  129.     default:
  130.         printf("Opcao inválida,por favor escolha uma nova opcao\n");
  131.         break;
  132.  
  133.     }
  134.  }
  135.  
  136.  int uI ()
  137.  {
  138.      int opcao;
  139.  
  140.      fflush(stdin);
  141.      printf("=====================================\n");
  142.      printf("======|Menu|=======\n");
  143.      printf("=====================================\n");
  144.      printf("Escolha uma opcao\n");
  145.      printf("[1] -- Iniciar o loop\n");
  146.      printf("[2] -- Adicionar um elemento ao inicio do Loop\n");
  147.      printf("[3] -- Adicionar um elemento ao fim do Loop\n");
  148.      printf("[4] -- Exibir os elementos adicionados ao Loop\n");
  149.      printf("[5] -- Finalizar o programa\n");
  150.      printf("=====================================\n");
  151.      printf("Sua opcao:");
  152.      scanf("%d",&opcao);
  153.  
  154.      return(opcao);
  155.  }
  156.  
  157. int main()
  158. {
  159.     int opcao;
  160.  
  161.     lace *reader = (lace*) malloc(sizeof(lace));
  162.  
  163.     if(!reader)
  164.     {
  165.         printf("Sem Memoria man\n");
  166.         exit(1);
  167.     }
  168.     initial(reader);
  169.  
  170.     do
  171.         {
  172.         system("CLS");
  173.         opcao=uI();
  174.         opc(reader,opcao);
  175.  
  176.         }while(opcao != 5);
  177.         free(reader);
  178.  
  179.     return 0;
  180. }
  181.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement