Advertisement
Guest User

Taller-programa

a guest
Jan 23rd, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.47 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct nodo
  5. {
  6.     int a;
  7.     struct nodo* sig;
  8. };
  9.  
  10. int contar_nodos = 0;
  11. struct nodo* primer_nodo = NULL;
  12. struct nodo* lista = NULL;
  13. struct nodo* aux = NULL;
  14.  
  15. void Eliminar_UltimoNodo(void)
  16. {
  17.     struct nodo* n = primer_nodo;
  18.     struct nodo* anterior_nodo = NULL;
  19.     if(primer_nodo->sig == NULL)
  20.     {
  21.         primer_nodo = NULL;
  22.         aux = NULL;
  23.         lista = NULL;
  24.         free(n);
  25.     }
  26.     else
  27.     {
  28.         while (n->sig != NULL)
  29.         {
  30.             anterior_nodo = n;
  31.             n = n->sig;
  32.         }
  33.         n = lista;
  34.         lista = anterior_nodo;
  35.         aux = anterior_nodo;
  36.         lista->sig = NULL;
  37.         free(n);
  38.     }
  39.     printf("El ultimo nodo se libero con exito\n");
  40.     --contar_nodos;
  41. }
  42.  
  43. void Eliminar_PrimerNodo(void)
  44. {
  45.     struct nodo* n = primer_nodo;
  46.     primer_nodo = primer_nodo->sig;
  47.     free(n);
  48.     puts("El primer nodo se libero con exito\n");
  49.     --contar_nodos;
  50. }
  51.  
  52. int CrearNodos(void)
  53. {
  54.     lista = malloc(sizeof(struct nodo));
  55.     if (lista == NULL)
  56.     {
  57.         printf("ERROR: No se pudo reservar memoria.\n");
  58.         return 0;
  59.     }
  60.     ++contar_nodos;
  61.     printf("Ingrese un numero:\n");
  62.     scanf("%d", &lista->a);
  63.     if (primer_nodo == NULL)
  64.     {
  65.         lista->sig = NULL;
  66.         primer_nodo = lista;
  67.         aux = lista;
  68.     }
  69.     else
  70.     {
  71.         lista->sig = NULL;
  72.         aux->sig = lista;
  73.         aux = lista;
  74.     }
  75.     return 1;
  76. }
  77.  
  78. void MostrarNodos(void)
  79. {
  80.     struct nodo* n = primer_nodo;
  81.     printf("Elementos:\n");
  82.     while (n != NULL)
  83.     {
  84.         printf("%d\n", n->a);
  85.         n = n->sig;
  86.     }
  87. }
  88.  
  89. void EliminarNodos(void)
  90. {
  91.     while (primer_nodo != NULL)
  92.     {
  93.         aux = primer_nodo;
  94.         primer_nodo = primer_nodo->sig;
  95.         free(aux);
  96.     }
  97.     aux = NULL;
  98.     lista = NULL;
  99. }
  100.  
  101. int main(void)
  102. {
  103.     int menu;
  104.     while(1)
  105.     {
  106.         printf("Menu de Opciones:\n");
  107.         printf("1. Crear nodo\n");
  108.         printf("2. Mostrar elementos del nodo\n");
  109.         printf("3. Eliminar el primer elemento del nodo\n");
  110.         printf("4. Eliminar el ultimo elemento del nodo\n");
  111.         printf("5. Salir del programa\n");
  112.         printf("Ingrese una opcion <1-5>\n");
  113.         scanf("%d", &menu);
  114.         if((menu >= 2 && menu <= 4) && (contar_nodos == 0))
  115.         {
  116.             printf("ERROR: La lista esta vacia\n");
  117.             system("pause");
  118.             continue;
  119.         }
  120.         switch(menu)
  121.         {
  122.             case 1:
  123.                 CrearNodos();  
  124.                 break;
  125.             case 2:
  126.                 MostrarNodos();
  127.                 break;
  128.             case 3:
  129.                 Eliminar_PrimerNodo();
  130.                 break;
  131.             case 4:
  132.                 Eliminar_UltimoNodo();
  133.                 break;
  134.             case 5:
  135.                 if(contar_nodos != 0)
  136.                     EliminarNodos();
  137.                 return 0;
  138.             default: printf("ERROR: Ingrese una opcion invalida <1-5>\n");
  139.         }
  140.         system("pause");
  141.     }
  142.     return 0;
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement