Тёмный

Estructuras dinámicas en C: Listas tipo Pila - 1 

diego moisset de espanes
Подписаться 29 тыс.
Просмотров 10 тыс.
50% 1

El curso en formato de texto lo puede seguir en
www.tutoriales...

Опубликовано:

 

8 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 32   
@alejandrogonzalezcolin4475
@alejandrogonzalezcolin4475 4 года назад
Hola @diego moisset de espanes llevo dias buscando por toda la web en español e ingles metodos de usar pilas en C. Doy un sincero agradeciemiento por tu contenido, es el que mejor explica a detalle como y porque se usa cada función.
@diegomoissetdeespanes
@diegomoissetdeespanes 4 года назад
Gracias Alejandro
@calebescoto5147
@calebescoto5147 3 года назад
Muy buen video, realmente agradecido con tu contenido ♥
@diegomoissetdeespanes
@diegomoissetdeespanes 3 года назад
Saludos Caleb.
@rov-0250
@rov-0250 2 года назад
La mejor explicación que vi por lejos
@ignaciorevainera
@ignaciorevainera 9 месяцев назад
Tengo una consulta, por qué en la función imprimir() no se hace free(reco) luego del while para liberar el nodo que creamos para recorrer la pila?
@diegomoissetdeespanes
@diegomoissetdeespanes 9 месяцев назад
Cuando hacemos: struct nodo *reco=raiz; NO se esta creando un nodo. Solo se define un puntero y lo inicializamos con la dirección del primer nodo de la lista o a NULL si la lista esta vacia. Cuando eliminamos nodos vamos a utilizar la función free.
@zbrandz8554
@zbrandz8554 2 года назад
Hola, muchas gracias por este vídeo, he aprendido mucho viendolo
@zolrack_892
@zolrack_892 3 года назад
Muy buen video, incluye las funciones necesarias de una pila, perfecto para un programador novato ;)
@diegomoissetdeespanes
@diegomoissetdeespanes 3 года назад
Saludos. Zolrack_89
@rodrigogarcilazo8323
@rodrigogarcilazo8323 2 месяца назад
Hola Diego, que tal? Te hago una preguntita. Cuando vos creas la variable de registro de tipo puntero "struct nodo *reco = raiz" para liberar, por que directamente no utilizas la variable global raiz? por ejemplo: void liberar(){ struct nodo *borr; while(raiz != NULL){ borr = raiz; raiz = raiz->siguiente; free(borr); } } Gracias!!! Sos un genio loco, vengo aprendiendo una banda con tu curso
@diegomoissetdeespanes
@diegomoissetdeespanes 2 месяца назад
void liberar(){ struct nodo *borr; while(raiz != NULL){ free(raiz); raiz = raiz->siguiente; // Error porque liberamos previamente lo apuntado por raiz y luego no podemos acceder a 'siguiente' !!! } }
@wolframv5230
@wolframv5230 2 года назад
sos el 1
@lucaspadularrosa5219
@lucaspadularrosa5219 3 года назад
Un tutorial de haskell por favor!!! Maestro!
@irmalopez1204
@irmalopez1204 3 года назад
Muchas gracias, que ha sido difícil encontrar estructuras de datos en c :(
@diegomoissetdeespanes
@diegomoissetdeespanes 3 года назад
Saludos Irma.
@calebescoto5147
@calebescoto5147 3 года назад
Si, La Ingeniera con la que llevo ESD115 no es que explique mucho y los videos de Diego Moisset han sido una luz en el tunel ♥.
@alejacobo2257
@alejacobo2257 3 года назад
ve la mina de oro que vine a descubrir
@HotaPe
@HotaPe Год назад
Muchas gracias por tu contenido, es de mucha calidad y ayuda. Pero tengo una duda, y es para liberar la pila, creas un nodo reco, pero no puedes hacer lo mismo utilizando directamente el raiz? Haces bor = raiz , raiz = raiz->sig y liberas el bor... no sería lo mismo?
@diegomoissetdeespanes
@diegomoissetdeespanes Год назад
Efectivamente, estoy utilizando un puntero auxiliar que podemos evitarlo: void liberar() { struct nodo *bor; while (raiz != NULL) { bor = raiz; raiz = raiz->sig; free(bor); } }
@HotaPe
@HotaPe Год назад
@@diegomoissetdeespanes muchas gracias por la respuesta 😊
@HotaPe
@HotaPe Год назад
@@diegomoissetdeespanes por cierto, me olvide comentarte, haciendo pruebas aquel día, si después del liberar queremos insertar de nuevo se genera un bug al compilar y queda en bucle infinito, y creo que es porque no liberas directamente la *raiz y liberas el puntero *reco, almenos yo si libero directamente raiz y inserto de nuevo y imprimo la lista me sale correctamente, en principio reco apunta a la dirección de raiz pero al hacerle free a reco me da que borramos esa dirección de memoria y perdemos el apuntado de raiz y al volver a llenar la pila se genera un error. Me cuesta entender porque pero pasa. Por eso decidí liberar raiz directamente y luego no tenia problema si llenaba de nuevo la pila. Un saludo.
@dmlndz
@dmlndz 2 года назад
Buenas, profesor! Una duda: cómo es posible que el Puntero Raiz, a pesar de que no tenga aún una dir. de memoria asignada, pueda almacenar "en una dir. de memoria" un valor como NULL? lo digo porq se antecedió un * al puntero para asignarle NULL.
@diegomoissetdeespanes
@diegomoissetdeespanes 2 года назад
#include #include #include int main() { //Se define una variable de tipo puntero. Puede almacenar //una dirección o el valor NULL (el cual representa que no tiene una dirección de memoria dicha variable) int *puntero; puntero=NULL; //Ahora reservamos espacio para almacenar un valor entero. La variable puntero pierde el valor NULL y se //guarda en su interior la dirección de memoria donde se almacena el entero. puntero = malloc(sizeof(int)); //Almacenamos un entero en lo apuntado por puntero. Diferenciar con puntero=NULL (en esto almacenamos en puntero un valor) *puntero=100; //Imprimimos el valor entero de lo apuntado por la variable puntero printf("valor2:%i ",*puntero); //Liberamos el espacio donde se almaceno el entero free(puntero); //Podemos asignar ahora un NULL nuevamente a puntero, para recordar que no apunta a un entero el puntero. puntero=NULL; getch(); }
@razorgaming646
@razorgaming646 Год назад
tengo una duda profe yo lo intento hacer mandando por parametro la raiz a todas mis funciones, es forzoso que sea global la raiz?
@diegomoissetdeespanes
@diegomoissetdeespanes Год назад
Es más conveniente que se pase como parámetro, yo no lo hago por el momento para poder concentrarnos en las otras partes de los algoritmos. #include #include #include struct nodo { int info; struct nodo *sig; }; //variable global que apunta al primer nodo de la lista struct nodo *raiz=NULL; void insertar(int x,struct nodo **raiz) { struct nodo *nuevo; nuevo = malloc(sizeof(struct nodo)); nuevo->info = x; if (raiz == NULL) { *raiz = nuevo; nuevo->sig = NULL; } else { nuevo->sig = *raiz; *raiz = nuevo; } } void imprimir(struct nodo *raiz) { struct nodo *reco=raiz; printf("Lista completa. "); while (reco!=NULL) { printf("%i ",reco->info); reco=reco->sig; } printf(" "); } int extraer(struct nodo **raiz) { if (raiz != NULL) { int informacion = (*raiz)->info; struct nodo *bor = *raiz; *raiz = (*raiz)->sig; free(bor); return informacion; } else { return -1; } } void liberar(struct nodo **raiz) { struct nodo *reco = *raiz; struct nodo *bor; while (reco != NULL) { bor = reco; reco = reco->sig; free(bor); } } int main() { insertar(10,&raiz); insertar(40,&raiz); insertar(3,&raiz); imprimir(raiz); printf("Extraemos de la pila:%i ",extraer(&raiz)); //imprimir(raiz); liberar(&raiz); getch(); return 0; }
@razorgaming646
@razorgaming646 Год назад
@@diegomoissetdeespanes es que ya lo intente pero no funciona o mas bien no quiere funcionar de esa manera lo tuve que declarar como global para que funcionara
@jeremendoza01
@jeremendoza01 2 года назад
tome su like buen hombre
@benjaminvelasco2050
@benjaminvelasco2050 2 года назад
crack Conca
@joaquingutierrezfranco6928
@joaquingutierrezfranco6928 2 года назад
hola buenos dias! queria consultarle si se podrian crear listas sin la utilizacion de la funcion malloc? yo programo microcontroladores, no se si en microcontroladores se podra dar uso de esa funcion malloc, lo que si en los microcontroladores se maneja la memoria eeprom, que deberia de ser similar al manejo de memoria que utiliza la funcion malloc, capaz que este tema deba de encararlo por ahi...
@diegomoissetdeespanes
@diegomoissetdeespanes 2 года назад
Lo siento, no he trabajado con microcontroladores.
@joaquingutierrezfranco6928
@joaquingutierrezfranco6928 2 года назад
@@diegomoissetdeespanes muchas gracias igual!