Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct nodo
- {
- //informacion
- int numero;
- //la dirección de memoria del siguiente nodo
- struct nodo * siguiente;
- }nodo;
- nodo * inicializarLista();
- nodo * crearNodo(int dato);
- nodo * agregarPpio(nodo * lista, nodo * nuevoNodo);
- void mostrarLista(nodo * lista);
- nodo * cargarLista(nodo * lista);
- nodo * buscarUltimoLista(nodo * lista);
- nodo * agregarAlFinal(nodo * lista,nodo * nuevoNodo);
- int main()
- {
- //primer y unico NODO
- nodo * lista = inicializarLista();
- lista = cargarLista(lista);
- mostrarLista(lista);
- return 0;
- }
- nodo * cargarLista(nodo * lista)
- {
- char seguir = 's';
- int numero;
- while (seguir == 's')
- {
- printf("ingrese un numero\n");
- scanf("%d",&numero);
- nodo * unNodo = crearNodo(numero);
- lista = agregarAlFinal(lista,unNodo);
- printf("desea seguir?\n");
- fflush(stdin);
- scanf("%c",&seguir);
- }
- return lista;
- }
- //necesitamos solamente el primer nodo
- void mostrarLista(nodo * lista)
- {
- //mientras haya un nodo...
- while (lista != NULL)
- {
- //mostramos el nodo actual
- printf("el numero es : %d\n",lista->numero);
- //avanzamos hacia el siguiente nodo usando la variable "siguiente" que contiene
- //la dir. de memoria del nodo que esta al lado
- lista = lista->siguiente;
- }
- }
- //es para limpiar el espacio de memoria
- //se debe hacer antes de usar una lista y una sola vez
- //se debe hacer por cada lista
- nodo * inicializarLista()
- {
- return NULL;
- }
- //generacion del espacio de memoria de UN nodo
- //recibe como param la parte de informacion
- //devuelve DONDE esta alojado el nodo
- nodo * crearNodo(int dato)
- {
- //reservo en memoria un espacio del tamaño de un nodo y me devuelve donde esta alojado
- nodo * nuevoNodo = (nodo*)malloc(sizeof(nodo));
- nuevoNodo->numero = dato;
- //le asigno null porque no tiene AUN vecino
- //no se si va ir al ppio, en el medio o al final de una lista
- nuevoNodo->siguiente = NULL;
- return nuevoNodo;
- }
- nodo * agregarPpio(nodo * lista, nodo * nuevoNodo)
- {
- //si la lista esta vacia...
- if (lista == NULL)
- {
- //reemplazo la lista (vacia) por el nuevo nodo
- lista = nuevoNodo;
- }
- else
- {
- //primero engancho
- //20 (nn) el sig. apunta a 10 (lista)
- nuevoNodo->siguiente = lista;
- //reemplazo lista (10) con el nuevo nodo (20)
- //el nuevo primero va a ser el 20 xq agrego al principio
- lista = nuevoNodo;
- }
- return lista;
- }
- nodo * buscarUltimoLista(nodo * lista)
- {
- nodo * ultimo = lista;
- while (lista->siguiente != NULL)
- {
- lista = lista->siguiente;
- ultimo = lista;
- }
- return ultimo;
- }
- nodo * agregarAlFinal(nodo * lista,nodo * nuevoNodo)
- {
- if (lista == NULL)
- {
- lista = nuevoNodo;
- }
- else
- {
- nodo * ultimo = buscarUltimoLista(lista);
- ultimo->siguiente = nuevoNodo;
- }
- return lista;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement