Advertisement
o_paulooo

Lista em sala (finalizar)

Sep 23rd, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.51 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4.  
  5. typedef struct no
  6. {
  7.     int dados;
  8.     struct no *prox;
  9. }Tlista;
  10.  
  11. typedef struct
  12. {
  13.     Tlista *inicio;
  14.     Tlista *fim;
  15. }lista;
  16.  
  17. void criar_lista(lista *l)
  18. {
  19.     l->inicio = NULL;
  20.     l->fim = NULL;
  21. }
  22.  
  23. int lista_vazia(lista *l)
  24. {
  25.     if(l->inicio == NULL)
  26.         return 1;
  27.  
  28.     else
  29.         return 0;
  30. }
  31.  
  32. void listar_inicio(lista *l, int dados)                                                                         //1
  33. {
  34.     Tlista *aux = (Tlista*)malloc(sizeof(Tlista));
  35.  
  36.     aux->dados = dados;
  37.     aux->prox = NULL;
  38.  
  39.     if(lista_vazia(l))
  40.         l->inicio = aux;
  41.     else
  42.     {
  43.         aux->prox = l->inicio;
  44.         l->inicio = aux;
  45.     }
  46. }
  47.  
  48. void listar_fim(lista *l, int dados)                                                                            //2
  49. {
  50.     Tlista *aux = (Tlista*)malloc(sizeof(Tlista));
  51.  
  52.     aux->dados = dados;
  53.     aux->prox = NULL;
  54.  
  55.     if(lista_vazia(l))
  56.     {
  57.         l->inicio = aux;
  58.     }
  59.  
  60.     else
  61.     {
  62.         l->fim->prox = aux;
  63.     }
  64.  
  65.     l->fim = aux;
  66. }
  67.  
  68. void listar_antes(lista *l, int antes, int dados)                                                               //3
  69. {
  70.     Tlista *aux;
  71.     int cont1, cont2;
  72.  
  73.     cont1 = cont2 = 0;
  74.  
  75.     if(lista_vazia(l))
  76.         printf("Lista Vazia!!!");
  77.  
  78.     else
  79.     {
  80.         aux = l->inicio;
  81.         while(aux->prox != NULL)
  82.         {
  83.             if(aux->dados == dados)
  84.             {
  85.                 l->inicio = aux->prox;
  86.  
  87.             }
  88.  
  89.             cont++;
  90.         }
  91.     }
  92.  
  93.  
  94.  
  95. }
  96.  
  97. void listar_depois(lista *l, int antes, int dados)                                                              //4
  98. {
  99.  
  100. }
  101.  
  102. void desenlistar_inicio(lista *l)                                                                               //5
  103. {
  104.     Tlista *aux;
  105.  
  106.     if(lista_vazia(l))
  107.         printf("Lista Vazia!!!");
  108.  
  109.     else
  110.     {
  111.         aux = l->inicio;
  112.         l->inicio = aux->prox;
  113.  
  114.         if(l->inicio == NULL)
  115.             l->fim == NULL;
  116.  
  117.         free(aux);
  118.     }
  119. }
  120.  
  121. void desenlistar_fim(lista *l)                                                                                  //6
  122. {
  123.  
  124. }
  125.  
  126. void desenlistar_antes(lista *l, int antes)                                                                     //7
  127. {
  128.  
  129. }
  130.  
  131. void desenlistar_depois(lista *l, int depois)                                                                   //8
  132. {
  133.  
  134. }
  135.  
  136. void mostrar_lista(lista *l)                                                                                    //9
  137. {
  138.     Tlista *aux;
  139.  
  140.     aux = l->inicio;
  141.  
  142.     if(lista_vazia(l))
  143.         printf("Lista Vazia!!!");
  144.  
  145.     else
  146.     {
  147.         while(aux != NULL)
  148.         {
  149.             printf("%4d", aux->dados);
  150.             aux = aux->prox;
  151.         }
  152.     }
  153. }
  154.  
  155. void menu()
  156. {
  157.     lista *l = (lista*)malloc(sizeof(lista*));
  158.     criar_lista(&l);
  159.  
  160.     int opc, listar, aux;
  161.  
  162.     do
  163.     {
  164.         opc = listar = aux = 0;
  165.         system("cls");
  166.         printf("1- Listar no Início\n");
  167.         printf("2- Listar no Fim\n");
  168.         printf("3- Listar Antes de Algum Valor\n");
  169.         printf("4- Enlistar Após Algum Valor\n");
  170.         printf("5- Desenlistar no Início\n");
  171.         printf("6- Desenlistar no Fim\n");
  172.         printf("7- Desenlistar Antes de Algum Valor\n");
  173.         printf("8- Desenlistar Após Algum Valor\n");
  174.         printf("9- Mostrar Lista\n");
  175.         printf("10- Sair\n\n>");
  176.         scanf("%d", &opc);
  177.         system("cls");
  178.  
  179.         switch(opc)
  180.         {
  181.             case 1:
  182.                 {
  183.                     printf("Digite o valor a ser Listado no Início: ");
  184.                     scanf("%d", &listar);
  185.                     listar_inicio(&l, listar);
  186.  
  187.                     printf("\n\n\n\n");
  188.                     system("pause");
  189.                     break;
  190.                 }
  191.  
  192.  
  193.             case 2:
  194.                 {
  195.                     printf("Digite o valor a ser Listado no Fim: ");
  196.                     scanf("%d", &listar);
  197.                     listar_fim(&l, listar);
  198.                     printf("\n\n\n\n");
  199.                     system("pause");
  200.                     break;
  201.                 }
  202.  
  203.             case 3:
  204.                 {
  205.                     printf("Digite o valor a ser listado antes de algum dado: ");
  206.                     scanf("%d", &listar);
  207.                     printf("\n\n");
  208.                     mostrar_lista(&l);
  209.                     printf("\n\nDigite antes de qual deste(s) valor(es) você quer listar o '%d':", listar);
  210.                     scanf("%d", &aux);
  211.                     listar_antes(&l, listar, aux);
  212.                     printf("\n\n\n\n");
  213.                     system("pause");
  214.                     break;
  215.                 }
  216.  
  217.             case 4:
  218.                 {
  219.                     printf("Digite o valor a ser listado após de algum dado: ");
  220.                     scanf("%d", &listar);
  221.                     printf("\n\n");
  222.                     mostrar_lista(&l);
  223.                     printf("\n\nDigite após qual deste(s) valor(es) você quer listar o '%d':", listar);
  224.                     scanf("%d", &aux);
  225.                     listar_depois(&l, listar, aux);
  226.  
  227.                     printf("\n\n\n\n");
  228.                     system("pause");
  229.                     break;
  230.                 }
  231.  
  232.             case 5:
  233.                 {
  234.  
  235.                     printf("\n\n\n\n");
  236.                     system("pause");
  237.                     break;
  238.                 }
  239.  
  240.             case 6:
  241.                 {
  242.                     desenlistar_inicio(&l);
  243.  
  244.                     printf("\n\n\n\n");
  245.                     system("pause");
  246.                     break;
  247.                 }
  248.  
  249.             case 7:
  250.                 {
  251.  
  252.                     printf("\n\n\n\n");
  253.                     system("pause");
  254.                     break;
  255.                 }
  256.  
  257.             case 8:
  258.                 {
  259.  
  260.                     printf("\n\n\n\n");
  261.                     system("pause");
  262.                     break;
  263.                 }
  264.  
  265.  
  266.             case 9:
  267.                 {
  268.                     mostrar_lista(&l);
  269.                     printf("\n\n\n\n");
  270.                     system("pause");
  271.                     break;
  272.                 }
  273.  
  274.             case 10:
  275.                 {
  276.                     opc = 10;
  277.                     break;
  278.                 }
  279.         }
  280.  
  281.     }while(opc != 10);
  282. }
  283.  
  284. int main()
  285. {
  286.     setlocale(LC_ALL,"portuguese");
  287.  
  288.     menu();
  289.  
  290.     printf("\n\n\n\n\n\nFIM.........\n\n\n\n\n");
  291.     return 0;
  292. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement