Advertisement
justaCprogrammer

listaencadedString2.C

Jul 5th, 2022
733
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.70 KB | None
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. struct st_next
  6. {
  7.     int id;
  8.     char name[100];
  9.  
  10.     struct st_next *nextI;
  11.     struct st_next *nextS;
  12. };
  13.  
  14. typedef struct st_next no;
  15.  
  16. int vazio (no * readerS, no * readerI)
  17. {
  18.     if((readerI->nextI = NULL)&&(readerS->nextS = NULL))
  19.     {
  20.         return 1;
  21.     }else
  22.     {
  23.         return 0;
  24.     }
  25. }
  26.  
  27. void initial (no * readerS, no * readerI)
  28. {
  29.     readerI->nextI = NULL;
  30.     readerS->nextS = NULL;
  31. }
  32.  
  33. void freeUsage(no * readerS, no * readerI)
  34. {
  35.     if(!vazio(readerS,readerI))
  36.     {
  37.         no *proxEl,*proxN, *atualI,*atualS;
  38.         atualI = readerI->nextI;
  39.         atualS = readerS->nextS;
  40.         while((atualI != NULL)&&(atualS != NULL))
  41.         {
  42.             proxEl = atualI->nextI;
  43.             free(atualI);
  44.             atualI = proxEl;
  45.             proxN = atualS->nextS;
  46.             free(atualS);
  47.             atualS = proxN;
  48.         }
  49.     }
  50. }
  51.  
  52. void showList (no * readerS , no * readerI)
  53. {
  54.     int cont;
  55.     if(!vazio(readerS,readerI))
  56.     {
  57.         printf("Primeiro adicione algum elemento na lista\n");
  58.         exit(1);
  59.     }
  60.         no *tmpI, *tmpS;
  61.         tmpS = readerS->nextS;
  62.         tmpI = readerI->nextI;
  63.  
  64.         while((tmpI != NULL)&&(tmpS != NULL))
  65.         {
  66.             printf("Nome:%s\n",tmpS->name);
  67.             tmpS = tmpS ->nextS;
  68.             printf("Idade:%d\n",tmpI->id);
  69.             tmpI = tmpI->nextI;
  70.         }
  71.  
  72. }
  73.  
  74. void adicionaInicio (no * readerS, no * readerI)
  75. {
  76.     int cont;
  77.     char **tempNam;
  78.     tempNam = malloc (1 * sizeof (int));
  79.     no *novoElI = (no*)malloc(sizeof(no));
  80.     no *novoElS = (no*)malloc(sizeof(char));
  81.     fflush(stdin);
  82.     if((!novoElI)&&(!novoElS))
  83.     {
  84.         printf("Sem espaço! Libere um pouco antes de executar\n");
  85.         exit(1);
  86.     }
  87.         for(cont = 0;cont < 1;cont++)
  88.         {
  89.         printf("Adicione o elemento\n");
  90.         tempNam[cont] = malloc(100);
  91.         fgets(tempNam[cont],100,stdin);
  92.         strcpy(&novoElS->name[cont],tempNam[cont]);
  93.         }
  94.         printf("De a idade do elemento\n");
  95.         scanf("%d",&novoElI->id);
  96.  
  97.         no * velhoTopI = readerI->nextI;
  98.         readerI->nextI = novoElI;
  99.         novoElI->nextI = velhoTopI;
  100.  
  101.  
  102.         no *velhoTopS = readerS ->nextS;
  103.         readerS->nextS = novoElS;
  104.         novoElS->nextS = velhoTopS;
  105.  
  106.  
  107. }
  108.  
  109. void adicionaFim (no * readerS, no * readerI)
  110. {
  111.     int cont;
  112.     char **tempNam;
  113.     tempNam = malloc (1 * sizeof (int));
  114.     no *novoElI = (no*)malloc(sizeof(no));
  115.     no *novoElS = (no*)malloc(sizeof(char));
  116.  
  117.     if((!novoElI)&&(!novoElS))
  118.     {
  119.         printf("Sem memoria disponivel\n");
  120.         exit(1);
  121.     }
  122.     fflush(stdin);
  123.     for(cont = 0; cont < 1;cont++)
  124.     {
  125.     printf("Adicione o elemento do fim\n");
  126.     tempNam[cont] = malloc(100);
  127.     fgets(tempNam[cont],100,stdin);
  128.     strcpy(&novoElS->name[cont],tempNam[cont]);
  129.     }
  130.     printf("De a idade do elemento\n");
  131.     scanf("%d",&novoElS->id);
  132.     novoElI->nextI = NULL;
  133.     novoElS->nextS = NULL;
  134.  
  135.     if(!vazio(readerS,readerI))
  136.     {
  137.         readerI->nextI = novoElI;
  138.         readerS->nextS = novoElS;
  139.     }else
  140.     {
  141.         no *tmpI = readerI->nextI;
  142.         no *tmpS = readerS->nextS;
  143.  
  144.         while((tmpI->nextI != NULL)&&(tmpS->nextS != NULL))
  145.         {
  146.             tmpI = tmpI->nextI;
  147.             tmpS = tmpS->nextS;
  148.         }
  149.  
  150.         tmpI->nextI = novoElI;
  151.         tmpS->nextS = novoElS;
  152.     }
  153. }
  154.  
  155. int userInterface()
  156. {
  157.     system("Cls");
  158.     int opt;
  159.     printf("----------|Menu|--------------\n");
  160.     printf("[1] - Adicionar um elemento no inicio da lista\n");
  161.     printf("[2] - Adicionar um elemento no fim da lista\n");
  162.     printf("[3] - Imprimir elementos na tela\n");
  163.     printf("[4] - Terminar programa\n");
  164.     printf("Sua opcao: ");
  165.     scanf("%d",&opt);
  166.     return opt;
  167. }
  168.  
  169. void choosenOne (no * readerS,no * readerI, int opt)
  170. {
  171.     switch(opt)
  172.     {
  173.     case 1:
  174.         adicionaInicio(readerS,readerI);
  175.         break;
  176.  
  177.     case 2:
  178.         adicionaFim(readerS,readerI);
  179.         break;
  180.  
  181.     case 3:
  182.         showList(readerS,readerI);
  183.         system("PAUSE");
  184.         break;
  185.  
  186.     case 4:
  187.          printf("Fechando o programa!\n");
  188.          freeUsage(readerS,readerI);
  189.          break;
  190.  
  191.     default:
  192.         printf("Opcao invalida,por favor escolha uma opcao valida\n");
  193.         break;
  194.     }
  195. }
  196.  
  197. int main ()
  198. {
  199.     int opcao;
  200.     no * readerS = (no*) malloc(sizeof(no));
  201.     no * readerI = (no*) malloc(sizeof(no));
  202.     initial(readerS,readerI);
  203.  
  204.     do
  205.     {
  206.     opcao = userInterface();
  207.     choosenOne(readerS,readerI,opcao);
  208.  
  209.     }while(opcao != 4);
  210.  
  211.     free(readerS);
  212.     free(readerI);
  213.  
  214.     return 0;
  215. }
  216.  
Advertisement
RAW Paste Data Copied
Advertisement