Advertisement
gonzalob

Untitled

Aug 31st, 2021
1,118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.84 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <string.h>
  5.  
  6. typedef struct
  7. {
  8.     int edad;
  9.     char nombre[20];
  10.  
  11. }persona;
  12.  
  13. typedef struct
  14. {
  15.     persona unaPersona;
  16.     struct nodo * siguiente;
  17.  
  18. }nodo;
  19.  
  20. nodo * inicLista();
  21. nodo * cargarNodo();
  22. nodo * crearNodo(persona unaPersona);
  23. nodo * agregarAlPpio(nodo * lista,nodo * nuevoNodo);
  24. void mostrarLista(nodo * lista);
  25. void mostrarUnaPersona(persona p);
  26. nodo * agregarMuchos(nodo * lista);
  27. void mostrarListaRecursivamente(nodo * lista);
  28. nodo * agregarMuchosRecursivo(nodo * lista,char mander);
  29. nodo * buscarUltimoLista(nodo * lista);
  30. nodo * agregarAlFinal(nodo * lista, nodo * nuevoNodo);
  31.  
  32. int main()
  33. {
  34.     nodo * lista = inicLista();
  35.     nodo * ultimo = buscarUltimoLista(lista);
  36.     if (ultimo!=NULL)
  37.         mostrarUnaPersona(ultimo->unaPersona);
  38.         else
  39.             printf("lista vacia\n");
  40.  
  41.     lista = agregarMuchosRecursivo(lista,'s');
  42.     mostrarListaRecursivamente(lista);
  43.  
  44.     ultimo = buscarUltimoLista(lista);
  45.     if (ultimo!=NULL)
  46.         mostrarUnaPersona(ultimo->unaPersona);
  47.         else
  48.             printf("lista vacia\n");
  49.  
  50. }
  51.  
  52. nodo * inicLista()
  53. {
  54.     return NULL;
  55. }
  56.  
  57. nodo * crearNodo(persona unaPersona)
  58. {
  59.     nodo * nuevoNodo;
  60.     nuevoNodo = (nodo*)malloc(sizeof(nodo));
  61.     nuevoNodo->unaPersona = unaPersona;
  62.     nuevoNodo->siguiente = NULL;
  63.     return nuevoNodo;
  64. }
  65.  
  66.  
  67. nodo * cargarNodo()
  68. {
  69.     nodo * nuevoNodo;
  70.  
  71.     persona personaNueva;
  72.  
  73.     printf("ingrese una edad\n");
  74.     scanf("%d",&personaNueva.edad);
  75.  
  76.     printf("ingrese un nombre\n");
  77.     fflush(stdin);
  78.     scanf("%s",&personaNueva.nombre);
  79.  
  80.     nuevoNodo = crearNodo(personaNueva);
  81.  
  82.     return nuevoNodo;
  83. }
  84.  
  85. nodo * agregarAlPpio(nodo * lista,nodo * nuevoNodo)
  86. {
  87.     if (lista == NULL)
  88.     {
  89.         lista = nuevoNodo;
  90.     }
  91.     else
  92.     {
  93.         nuevoNodo->siguiente = lista;
  94.         lista = nuevoNodo;
  95.     }
  96.  
  97.     return lista;
  98. }
  99.  
  100. void mostrarLista(nodo * lista)
  101. {
  102.     nodo * seguidora = lista;
  103.     while (seguidora!=NULL)
  104.     {
  105.         mostrarUnaPersona(seguidora->unaPersona);
  106.  
  107.         seguidora = seguidora->siguiente;
  108.     }
  109. }
  110.  
  111. void mostrarListaRecursivamente(nodo * lista)
  112. {
  113.     nodo * seguidora = lista;
  114.     if (seguidora!=NULL)
  115.     {
  116.         mostrarUnaPersona(seguidora->unaPersona);
  117.  
  118.         mostrarListaRecursivamente(seguidora->siguiente);
  119.     }
  120.     else
  121.     {
  122.         printf("FIN DE LA LISTA\n");
  123.     }
  124. }
  125.  
  126. void mostrarUnaPersona(persona p)
  127. {
  128.         printf("%s\n",p.nombre);
  129.         printf("%d\n",p.edad);
  130.         printf("--------------\n");
  131. }
  132.  
  133. nodo * agregarMuchos(nodo * lista)
  134. {
  135.     char mander = 's';
  136.     while (mander == 's')
  137.     {
  138.         nodo * nuevoNodo = cargarNodo();
  139.         lista = agregarAlPpio(lista,nuevoNodo);
  140.  
  141.         printf("desea seguir? \n");
  142.         fflush(stdin);
  143.         scanf("%c",&mander);
  144.     }
  145.     return lista;
  146. }
  147.  
  148. nodo * agregarMuchosRecursivo(nodo * lista,char mander)
  149. {
  150.     if (mander == 's')
  151.     {
  152.         nodo * nuevoNodo = cargarNodo();
  153.         lista = agregarAlFinal(lista,nuevoNodo);
  154.  
  155.         printf("desea seguir? \n");
  156.         fflush(stdin);
  157.         scanf("%c",&mander);
  158.  
  159.         lista = agregarMuchosRecursivo(lista,mander);
  160.     }
  161.     return lista;
  162. }
  163.  
  164. nodo * buscarUltimoLista(nodo * lista)
  165. {
  166.     nodo * ultimo;
  167.     if (lista == NULL)
  168.     {
  169.         ultimo = NULL;
  170.     }
  171.     else
  172.     {
  173.         nodo * seguidora = lista;
  174.         while (seguidora->siguiente !=NULL)
  175.         {
  176.             seguidora = seguidora->siguiente;
  177.         }
  178.         ultimo = seguidora;
  179.     }
  180.     return ultimo;
  181. }
  182.  
  183. nodo * agregarAlFinal(nodo * lista, nodo * nuevoNodo)
  184. {
  185.     if (lista==NULL)
  186.     {
  187.         lista = nuevoNodo;
  188.     }
  189.     else
  190.     {
  191.         nodo * ultimo = buscarUltimoLista(lista);
  192.         ultimo->siguiente = nuevoNodo;
  193.     }
  194.  
  195.     return lista;
  196. }
  197.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement