Advertisement
gonzalob

Untitled

Jan 21st, 2022
851
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.09 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct nodo
  5. {
  6.     //informacion
  7.     int numero;
  8.     //la dirección de memoria del siguiente nodo
  9.     struct nodo * siguiente;
  10. }nodo;
  11.  
  12. nodo * inicializarLista();
  13. nodo * crearNodo(int dato);
  14. nodo * agregarPpio(nodo * lista, nodo * nuevoNodo);
  15. void mostrarLista(nodo * lista);
  16. nodo * cargarLista(nodo * lista);
  17. nodo * buscarUltimoLista(nodo * lista);
  18. nodo * agregarAlFinal(nodo * lista,nodo * nuevoNodo);
  19.  
  20.  
  21. int main()
  22. {
  23.     //primer y unico NODO
  24.     nodo * lista = inicializarLista();
  25.  
  26.     lista = cargarLista(lista);
  27.  
  28.     mostrarLista(lista);
  29.  
  30.     return 0;
  31. }
  32.  
  33. nodo * cargarLista(nodo * lista)
  34. {
  35.     char seguir = 's';
  36.     int numero;
  37.     while (seguir == 's')
  38.     {
  39.         printf("ingrese un numero\n");
  40.         scanf("%d",&numero);
  41.  
  42.         nodo * unNodo = crearNodo(numero);
  43.  
  44.         lista = agregarAlFinal(lista,unNodo);
  45.  
  46.         printf("desea seguir?\n");
  47.         fflush(stdin);
  48.         scanf("%c",&seguir);
  49.     }
  50.  
  51.     return lista;
  52. }
  53.  
  54. //necesitamos solamente el primer nodo
  55. void mostrarLista(nodo * lista)
  56. {
  57.     //mientras haya un nodo...
  58.     while (lista != NULL)
  59.     {
  60.         //mostramos el nodo actual
  61.         printf("el numero es : %d\n",lista->numero);
  62.         //avanzamos hacia el siguiente nodo usando la variable "siguiente" que contiene
  63.         //la dir. de memoria del nodo que esta al lado
  64.         lista = lista->siguiente;
  65.     }
  66. }
  67.  
  68.  
  69. //es para limpiar el espacio de memoria
  70. //se debe hacer antes de usar una lista y una sola vez
  71. //se debe hacer por cada lista
  72. nodo * inicializarLista()
  73. {
  74.     return NULL;
  75. }
  76. //generacion del espacio de memoria de UN nodo
  77. //recibe como param la parte de informacion
  78. //devuelve DONDE esta alojado el nodo
  79. nodo * crearNodo(int dato)
  80. {
  81.     //reservo en memoria un espacio del tamaño de un nodo y me devuelve donde esta alojado
  82.     nodo * nuevoNodo = (nodo*)malloc(sizeof(nodo));
  83.     nuevoNodo->numero = dato;
  84.     //le asigno null porque no tiene AUN vecino
  85.     //no se si va ir al ppio, en el medio o al final de una lista
  86.     nuevoNodo->siguiente = NULL;
  87.     return nuevoNodo;
  88. }
  89.  
  90. nodo * agregarPpio(nodo * lista, nodo * nuevoNodo)
  91. {
  92.     //si la lista esta vacia...
  93.     if (lista == NULL)
  94.     {
  95.         //reemplazo la lista (vacia) por el nuevo nodo
  96.         lista = nuevoNodo;
  97.     }
  98.     else
  99.     {
  100.         //primero engancho
  101.         //20 (nn) el sig. apunta a 10 (lista)
  102.         nuevoNodo->siguiente = lista;
  103.         //reemplazo lista (10) con el nuevo nodo (20)
  104.         //el nuevo primero va a ser el 20 xq agrego al principio
  105.         lista = nuevoNodo;
  106.     }
  107.  
  108.     return lista;
  109. }
  110.  
  111. nodo * buscarUltimoLista(nodo * lista)
  112. {
  113.     nodo * ultimo = lista;
  114.  
  115.     while (lista->siguiente != NULL)
  116.     {
  117.         lista = lista->siguiente;
  118.         ultimo = lista;
  119.     }
  120.  
  121.     return ultimo;
  122. }
  123.  
  124. nodo * agregarAlFinal(nodo * lista,nodo * nuevoNodo)
  125. {
  126.     if (lista == NULL)
  127.     {
  128.         lista = nuevoNodo;
  129.     }
  130.     else
  131.     {
  132.         nodo * ultimo = buscarUltimoLista(lista);
  133.         ultimo->siguiente = nuevoNodo;
  134.     }
  135.  
  136.     return lista;
  137. }
  138.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement