Advertisement
VivianeRenizia

HelpListaSimplesmenteEncadeada

Sep 16th, 2019
543
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.37 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. typedef struct sCelula{
  5.     int info;
  6.     struct sCelula *next;
  7. }CELULA;
  8.  
  9. CELULA* init(CELULA *lista){
  10.     lista = NULL;
  11.     return lista;
  12. }
  13.  
  14. CELULA* getnode(){
  15.     return (CELULA*)malloc(sizeof(CELULA));
  16. }
  17.  
  18. void freenode(CELULA *q){
  19.     free(q);
  20. }
  21. int Empty(CELULA *lista){
  22.     if(lista==NULL){
  23.         return 1;
  24.     }
  25.     return 0;
  26. }
  27. CELULA* Pesquisa(CELULA *lista, int x){
  28.     CELULA *q;
  29.     if(!Empty(lista)){
  30.         q=lista;
  31.         while(q!=NULL){
  32.             if(q->info==x){
  33.                 return q;
  34.             }
  35.             q=q->next;
  36.         }
  37.     }
  38.     return NULL;
  39. }
  40. CELULA* Insere_Inicio(CELULA *lista, int x){
  41.     CELULA *q;
  42.     q=getnode();
  43.     if(q!=NULL){
  44.         q->info=x;
  45.         q->next=lista;
  46.         lista=q;
  47.         return lista;
  48.     }else{
  49.         printf("Erro na alocacao");
  50.         return NULL;
  51.     }
  52. }
  53. CELULA* Insere_Fim(CELULA *lista, int x){
  54.     CELULA *q;
  55.     CELULA *aux;
  56.     q = getnode();
  57.     if(q!=NULL){
  58.         q->info=x;
  59.         q->next=NULL;
  60.         if(Empty(lista)){
  61.             lista = q;
  62.         }else{
  63.             aux = lista;
  64.             while(aux->next!=NULL){
  65.                 aux=aux->next;
  66.             }
  67.             aux->next=q;
  68.         }
  69.         return lista;
  70.     }else{
  71.         printf("Erro na alocação do no.");
  72.         return NULL;
  73.     }
  74. }
  75.  
  76. void Exibe_Lista(CELULA *lista){
  77.     printf("oi1");
  78.     CELULA *aux;
  79.     printf("oi2");
  80.     aux=lista;
  81.     printf("oi3");
  82.     while(aux!=NULL){
  83.         printf("oi4"); //Vai até aqui
  84.         printf("%d ", aux->info);
  85.         printf("oi5");
  86.         aux=aux->next;
  87.         printf("oi6");
  88.     }
  89.     printf("oi7");
  90.     printf("\n");
  91.     printf("oi8");
  92. }
  93.  
  94. CELULA* Remove_Inicio(CELULA *lista){
  95.     printf("oi1");
  96.     CELULA *q;
  97.     printf("oi2");
  98.     q=lista;
  99.     printf("oi3");
  100.     if(!Empty(lista)){
  101.         printf("oi4"); //vai até aqui
  102.         lista=q->next;
  103.         printf("oi5");
  104.         freenode(q);
  105.         printf("o6");
  106.         return lista;
  107.         printf("oi7");
  108.     }else{
  109.         printf("oi8");
  110.         printf("Lista vazia.");
  111.         printf("oi9");
  112.         return NULL;
  113.         printf("oi10");
  114.     }
  115.     printf("oi11");
  116. }
  117.  
  118. CELULA* Remove_Valor(CELULA *lista, int x){
  119.     printf("oi1");
  120.     CELULA *q;
  121.     printf("oi2");
  122.     CELULA *aux;
  123.     printf("oi3"); //só vai até aqui
  124.     if((q=Pesquisa(lista, x))!=NULL){
  125.         printf("oi4");
  126.         aux=lista;
  127.         printf("oi5");
  128.         if(aux==q){
  129.             printf("oi6");
  130.             Remove_Inicio(lista);
  131.             printf("oi7");
  132.         }else{
  133.             printf("oi8");
  134.             while(aux->next!=q){
  135.                 printf("oi9");
  136.                 aux=aux->next;
  137.                 printf("oi10");
  138.             }
  139.             printf("oi11");
  140.             aux->next=q->next;
  141.             printf("oi12");
  142.             freenode(q);
  143.             printf("oi13");
  144.         }
  145.         printf("oi14");
  146.         return lista;
  147.         printf("oi15");
  148.     }
  149.     printf("oi16");
  150.     return NULL;
  151.     printf("oi17");
  152. }
  153.  
  154. int Menu(CELULA *lista){
  155.     int cod, x;
  156.     do{
  157.         printf("\n(1) Inserir elemento no inicio.\n");
  158.         printf("(2) Inserir elemento no fim.\n");
  159.         printf("(3) Remove elemento no inicio.\n");
  160.         printf("(4) Remove elemento ns posicao desejada.\n");
  161.         printf("(5) Exibe elementos.\n");
  162.         scanf("%d", &cod);
  163.         switch(cod){
  164.             case 1:
  165.                 printf("Diga qual elemento quer inserir no inicio da lista: ");
  166.                 scanf("%d", &x);
  167.                 Insere_Inicio(lista, x);
  168.                 break;
  169.             case 2:
  170.                 printf("Diga qual elemento quer inserir no fim da lista: ");
  171.                 scanf("%d", &x);
  172.                 Insere_Inicio(lista, x);
  173.                 break;
  174.             case 3:
  175.                 Remove_Inicio(lista);
  176.                 break;
  177.             case 4:
  178.                 printf("Diga a posicao do elemento que quer remover: ");
  179.                 scanf("%d", &x);
  180.                 Remove_Valor(lista, x);
  181.                 break;
  182.             case 5:
  183.                 Exibe_Lista(lista);
  184.                 break;
  185.         }
  186.     }while(cod!=0);
  187. }
  188. int main(){
  189.     CELULA *ptrlista;
  190.     init(ptrlista);
  191.     Menu(ptrlista);
  192.     return 0;
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement