-
-
Save ArgiesDario/da409828e81ef441186268b8ee3acd5f to your computer and use it in GitHub Desktop.
#include <stdio.h> | |
#include <stdlib.h> | |
typedef struct snodo{ //snodo es el nombre de la estructura | |
int valor; | |
struct snodo *sig; //El puntero siguiente para recorrer la lista enlazada | |
}tnodo; //tnodo es el tipo de dato para declarar la estructura | |
typedef tnodo *tpuntero; //Puntero al tipo de dato tnodo para no utilizar punteros de punteros | |
void insertarEnLista (tpuntero *cabeza, int e); | |
void imprimirLista (tpuntero cabeza); | |
void borrarLista (tpuntero *cabeza); | |
int main(){ | |
int e; | |
tpuntero cabeza; //Indica la cabeza de la lista enlazada, si la perdemos no podremos acceder a la lista | |
cabeza = NULL; //Se inicializa la cabeza como NULL ya que no hay ningun nodo cargado en la lista | |
printf("Ingrese elementos, -1 para terminar: "); | |
scanf("%d",&e); | |
while(e!=-1){ | |
insertarEnLista (&cabeza, e); | |
printf ("Ingresado correctamente"); | |
printf ("\n"); | |
printf("Ingrese elementos, -1 para terminar: "); | |
scanf("%d",&e); | |
} | |
printf ("\nSe imprime la lista cargada: "); | |
imprimirLista (cabeza); | |
printf ("\nSe borra la lista cargada\n"); | |
borrarLista (&cabeza); | |
printf ("\n"); | |
system ("PAUSE"); | |
return 0; | |
} | |
void insertarEnLista (tpuntero *cabeza, int e){ | |
tpuntero nuevo; //Creamos un nuevo nodo | |
nuevo = malloc(sizeof(tnodo)); //Utilizamos malloc para reservar memoria para ese nodo | |
nuevo->valor = e; //Le asignamos el valor ingresado por pantalla a ese nodo | |
nuevo->sig = *cabeza; //Le asignamos al siguiente el valor de cabeza | |
*cabeza = nuevo; //Cabeza pasa a ser el ultimo nodo agregado | |
} | |
void imprimirLista(tpuntero cabeza){ | |
while(cabeza != NULL){ //Mientras cabeza no sea NULL | |
printf("%4d",cabeza->valor); //Imprimimos el valor del nodo | |
cabeza = cabeza->sig; //Pasamos al siguiente nodo | |
} | |
} | |
void borrarLista(tpuntero *cabeza){ | |
tpuntero actual; //Puntero auxiliar para eliminar correctamente la lista | |
while(*cabeza != NULL){ //Mientras cabeza no sea NULL | |
actual = *cabeza; //Actual toma el valor de cabeza | |
*cabeza = (*cabeza)->sig; //Cabeza avanza 1 posicion en la lista | |
free(actual); //Se libera la memoria de la posicion de Actual (el primer nodo), y cabeza queda apuntando al que ahora es el primero | |
} | |
} |
Se que pasó bastante tiempo desde su publicación, pero muchisimas gracias! Estoy viendo el tema para la universidad y no lograba crear por mi cuenta un programa que manipule listas enlazadas de forma modular, aun se me complica un poco el tema de los punteros. Me ayudaste un montón, el programa es claro y fue muy útil ver a alguien trabajandolo en español.
Gracias, podrías por favor indicarnos cómo quedaría la función insertarEnLista si no hubieramos hecho el
typedef tnodo *tpuntero;
sé que es con puntero doble, pero no lo logro comprender
Ok, ya lo resolví. habría quedado:
void insertarEnLista (tnodo **cabeza, int e){
tnodo *nuevo = malloc(sizeof(tnodo)); //Creamos un nuevo nodo y Utilizamos malloc para reservar memoria para ese nodo
nuevo->valor = e; //Le asignamos el valor ingresado por pantalla a ese nodo
nuevo->sig = *cabeza; //Le asignamos al siguiente el valor de cabeza
*cabeza = nuevo; //Cabeza pasa a ser el ultimo nodo agregado
}
Aunque admito que fue probando y descartando, ahora me toca hacer un gran prueba de escritorio para ver que es lo que sucede y comprenderlo
Hola!
Alguien puede apoyarme con esta actividad: ando trabajando con lenguaje C
- Realizar un programa en el lenguaje de C con el siguiente planteamiento:
A) Pregunta al usuario cuantos elementos quiere usar.
B) Crea un arreglo con valores enteros de la longitud que el usuario haya elegido.
C) Llena el arreglo con valores elegidos por el usuario.
D) Despliega en pantalla un menú con las siguientes opciones: - ordenamiento burbuja
- ordenamiento inserción
- ordenamiento selección
- ordenamiento quickSort
- búsqueda secuencial
- búsqueda binaria
- salir
E) Para las opciones 1, 2, 3, 4 despliega en pantalla el ordenamiento en forma ascendente del conjunto de valores que el usuario haya guardado en el arreglo.
F) Para las opciones 5 y 6 despliega en pantalla los valores que el usuario haya guardado en el arreglo y pregunta qué valor quiere buscar (sólo buscará un valor).
G) Despliega en pantalla la posición del valor encontrado y el valor encontrado.
Saludos!
Hola, alguien me puede decir como se puede aplicar digamos con personas, cunado el usuario pida su nombre, edad y si es hombre o mujer?
Y digamos que le prioridad a mujeres y/o adultos mayores???
P
Hola, alguien me puede decir como se puede aplicar digamos con personas, cunado el usuario pida su nombre, edad y si es hombre o mujer?
Y digamos que le prioridad a mujeres y/o adultos mayores???@EddyRocket386
En tu estructura debes de agregar los datos que necesitas, se más específico, ¿quieres llenar una lista para después pedirla?, ¿quieres que esté ordenada según el sexo y edad?
@Andrik-Ts-019
Bueno digamos que los datos que va a trabajar se pidan desde teclado, los cuales son los que mencionaba (nombre, edad, sexo) y hacerlo digamos que evalúe con una condicional, si la persona es mayor de edad lo mande al principio y recorra los demás.
@Andrik-Ts-019
Así es digamos es la idea y bueno si se agradecería lo del ejemplo si no es molestia lml
@Andrik-Ts-019
Al contrario, te agradezco el apoyo y orientación con tu material!!!
Me sirvió mucho, gracias!