+makigas Es fácil de entender el funcionamiento de las listas enlazas y lo expliquas muy bien, pero es tedioso en programarlo correctamente y tengo ganas de verte como lo haces.
Tengo una sola palabra para expresar el conocimiento que acabas de acercarnos ¡EXCELENTE!. Muchisimas gracias por compartir tu conocimiento. Saludos desde Argentina
Espero que con tus videos salve el trimestre de sistemas operativos, que al parecer voy a necesitar mucho las estructuras de datos y mi profesor previo a programar en sistemas operativos no me enseño nada, y el que tengo ahora se ve que va ir con todo
He encontrado esta lista de reproducción y ahora será mi salvación y la de mis compañeros para el parcial que tenemos el lunes :D la profe no nos explica un cariño y piensa que nosotros debemos hacerlo todo xD ¡buena!
Hermosas listas... Ahora que veo árboles todo me parece tan simple... xD Muy buen video! Te haré propaganda con mis compañeros que están fritos en estos temas! xD Saludos!
Mil gracias. Ahora ya entiendo el código que hay en las diapositivas de clase. Falté a clase cuando lo explicaron y estaba perdidísima para hacer la práctica de esta semana.
4 года назад+1
Qué hacer con las estructuras que algunos lenguajes ofrecen, por ejemplo: en Python tenemos las listas como parte del propio lenguaje, en JavaScript a los "arreglos" se les pueden agregar y eliminar elementos dinámicamente y por su parte Java ofrece su conjunto de colecciones como ArrayList. Cómo saber si se comportan realmente como una lista enlazada teórica, es decir, su complejidad en el tiempo es realmente lineal? y finalmente, deberíamos utilizarlas como sustitutos de una lista implementada por nosotros?. Estas preguntas también me surgen con las demás estructuras, no solo la listas. Eres un crack y muchas gracias por hacer estos videos.
En cada lenguaje es un poco distinto, pero en esencia, cuando estás mirándolo de lejos como parte de un proyecto mayor, deja de ser tan relevante la implementación interna de una estructura de datos, más allá de las propiedades generales: complejidad en tiempo, operaciones que expone... por ejemplo, saber cuándo usar una lista, o usar un set como si fuese una lista. Java es el único que te va a dar un poco más de juego porque tiene varias implementaciones de las estructuras de datos con distinto nombre para que puedas valorar.
Al fin :D Dos preguntas: 1º) Esto es lo que voy a ver el año que viene en la materia Algoritmos y Estructuras de Datos? 2º) En los videos prácticos vas a crear desde cero las estructuras o vas a usar las que ya fueron creadas para C y las que Java ya incluye?
1º Hombre, no conozco tu asignatura, pero esto es lo típico que se suele enseñar en algún momento de la carrera así que probablemente. (Un saludo a los que leáis este comentario que estéis pasando por esto ahora mismo, ánimo!) 2º En los vídeos prácticos voy a construir las estructuras de cero, se trata de ver la lógica que hay por debajo de la estructura.
No es tan difícil. Al menos no las primeras partes. Hay algunas estructuras que son un poco más complicadas de visualizar. Sólo intento saludar a las personas del futuro que vean esto mientras estudian para su examen xD
En el minuto 2:37 dices que "Los nodos no tienen por qué guardarse todos juntos en memoria, como ocurre con los arrays." Mi pregunta es: ¿En C van todos seguidos?, en ese caso, imagína que tenemos un array de 2.000.000 de datos (un poco tocho) y no hay ningún "hueco" con esa cantidad de memoria que esté totalmente vacío pero si hay 1.000.000 de huecos por un lado, un par de huechos ocupados con datos ajenos al array y después otro 1.000.000 de huecos libres, es decir, una especie de fractura que obliga a dividir en dos o más trozos el array, ¿podría dividirse o debería de ir junto todo sin ningún tipo de separación? Gracias.
En C sí, un array tiene todas sus posiciones contiguas en memoria y no hay separación entre elementos. Por eso en parte puedes acceder a un array con aritmética de punteros. Si el array lo declaras de forma estática en tu código el compilador ya se ocupa de que esa región de memoria quede junta. Y si la creas con memoria dinámica, malloc te va a reservar un buffer con posiciones contiguas también.
+Jesús Valera En conclusión no, no se puede, los arrays no tienen que dividirse, van en lugares consecutivos según el tamaño, por eso es que puedes usar indice para apuntar a un elemento, ej: elementos[3] apuntas al cuarto elemento...y por eso es que se declara el tipo del array ej: int elementos[10] Entonces el programa sabrá que para acceder directamente a elemento[3] entonces puede tomar la dirección de memoria en la que se encuentra el primer elemento[0] y avanzar de a 4bytes(tamaño de int en la memoria), entonces supongamos que elemento[0] = &0x0000 entonces elemento[1] = &0x0004, elemento[2] = &0x0008..etc, entonces solamente con lugares consecutivos en memoria es que C puede lidiar con accesos directos a un elemento que especifiques, todo para saber como acceder directamente, para acceder a elemento[3] C hace 4bytes multiplicado por 3 y añade esto a la dirección del arreglo para acceder a la sección de memoria de ese elemento directamente, por esa razón los arreglos no pueden ir quebrados, C no podría manejarlos con su aritmética de punteros, si intentarás hacer un array de tantos elementos el programa se te pondría muy lento por el procesamiento requerido y llenarías la memoria inútilmente con un arreglo que maneja solamente un tipo de dato...
Que estructura de datos usarías para mantener en memoria miles de elementos, por ejemplo, el reporte de ventas del mes, supon que la consulta de base de datos te regresará decenas de miles de registros. Que estructura de datos se usaría en ese caso, un array, una lista, un arbol?
Si alguien me pudiera ayudar le agradeceria, estoy algo perdido. En JavaScript el tamaño de un array es dinamico, podes agregar tantos elementos como quieras sin necesidad de especificar el largo del mismo. Tambien podes agregar y quitar elementos en tiempo de ejecucion. Por ejemplo. pop() borra el ultimo elemento y push() inserta uno.
10:29 Sé que es pseudocódigo, pero la condición del bucle no podría dar una bonita (y odiada) excepción de puntero a nulo? Si la lista es de un elemento, entonces nodo.siguiente será NULL, y no se puede acceder a la propiedad "siguiente" de NULL.
Pago en la universidad, no entiendo nada. Gratis aquí, con una sola explicación todo entendido. Este mundo esta mal... Gracias hermano, eres Dios!
X2
Concuerdo, pinch3 sistema educativo todo culero
a la universidad no se va aprender, ... se va por un cartoncillo que certifique que estudiaste...
RUclips el mejor profe
Nos vemos el próximo jueves con un ejemplo en C de cómo programar una lista enlazada.
+makigas Es fácil de entender el funcionamiento de las listas enlazas y lo expliquas muy bien, pero es tedioso en programarlo correctamente y tengo ganas de verte como lo haces.
Muy bueno tu video amigo, no entiendo como las personas no le prestan el suficiente tiempo a la teoría. Gracias.
La mejor explicación que he visto hasta ahora sobre listas simplemente enlazadas .
Gracias.
Eres el puto amo, me estaba costando entender esto ya que no he tocado mucho los punteros aún, ¡gracias!
Gente como tu es la que el mundo necesita!
Tengo una sola palabra para expresar el conocimiento que acabas de acercarnos ¡EXCELENTE!. Muchisimas gracias por compartir tu conocimiento. Saludos desde Argentina
Excelente felicitaciones. . . . !!! Gracias. Un cordial saludo desde Caracas Venezuela
>> ¿Porqué aun no existe la opción "ME ENCANTA" en RUclips?
--> Sinceramente, éste vídeo lo amerita :D
Espero que con tus videos salve el trimestre de sistemas operativos, que al parecer voy a necesitar mucho las estructuras de datos y mi profesor previo a programar en sistemas operativos no me enseño nada, y el que tengo ahora se ve que va ir con todo
Sistemas operativos no creo que te venga este tema
He encontrado esta lista de reproducción y ahora será mi salvación y la de mis compañeros para el parcial que tenemos el lunes :D la profe no nos explica un cariño y piensa que nosotros debemos hacerlo todo xD ¡buena!
Hermosas listas... Ahora que veo árboles todo me parece tan simple... xD
Muy buen video! Te haré propaganda con mis compañeros que están fritos en estos temas! xD
Saludos!
te recibiste?
@@enriqueemmanuelrioschyrnia2864 Hola! Si, y en parte gracias a makigas y sus explicaciones de dios xD
@@yadyguitar de qué pais eres? yo de Paraguay, se supone que estoy en 2 semestre de Ing informatica, pero ya vez con la cuarentena jaja
@@enriqueemmanuelrioschyrnia2864 Hola paisano, aquí también con diversión EDD
@@alexisinsfran paraguayo?
Entendi perfectamente. Muchisimas gracias por la explicación
Mil gracias. Ahora ya entiendo el código que hay en las diapositivas de clase. Falté a clase cuando lo explicaron y estaba perdidísima para hacer la práctica de esta semana.
Qué hacer con las estructuras que algunos lenguajes ofrecen, por ejemplo: en Python tenemos las listas como parte del propio lenguaje, en JavaScript a los "arreglos" se les pueden agregar y eliminar elementos dinámicamente y por su parte Java ofrece su conjunto de colecciones como ArrayList. Cómo saber si se comportan realmente como una lista enlazada teórica, es decir, su complejidad en el tiempo es realmente lineal? y finalmente, deberíamos utilizarlas como sustitutos de una lista implementada por nosotros?.
Estas preguntas también me surgen con las demás estructuras, no solo la listas.
Eres un crack y muchas gracias por hacer estos videos.
En cada lenguaje es un poco distinto, pero en esencia, cuando estás mirándolo de lejos como parte de un proyecto mayor, deja de ser tan relevante la implementación interna de una estructura de datos, más allá de las propiedades generales: complejidad en tiempo, operaciones que expone... por ejemplo, saber cuándo usar una lista, o usar un set como si fuese una lista. Java es el único que te va a dar un poco más de juego porque tiene varias implementaciones de las estructuras de datos con distinto nombre para que puedas valorar.
muy buen video, muy grafico. Excelente
Me encanta, eres de los pocos que no acelero la reproducción, o eres muy listo o te los preparas....
buenísimo!
Me suscribo, muchas gracias por el video
Comprimiste mi clase de 2 horas a 12 minutos EPICO graciasssss
ahora entiendo mejor la teoría de grafos muchas gracias :)
muchas gracias estan muy exelente este curso me suscribo y like
Me ayudó mucho! Gracias
realmente gracias, me sirvio tanto tanto
amigo puedes hacer ejemplos de inventir y concatenar estructuras de datos. ..gracias por tu videos!
Que genial explicas senpai
Al fin :D
Dos preguntas:
1º) Esto es lo que voy a ver el año que viene en la materia Algoritmos y Estructuras de Datos?
2º) En los videos prácticos vas a crear desde cero las estructuras o vas a usar las que ya fueron creadas para C y las que Java ya incluye?
1º Hombre, no conozco tu asignatura, pero esto es lo típico que se suele enseñar en algún momento de la carrera así que probablemente. (Un saludo a los que leáis este comentario que estéis pasando por esto ahora mismo, ánimo!)
2º En los vídeos prácticos voy a construir las estructuras de cero, se trata de ver la lógica que hay por debajo de la estructura.
+makigas Tan malo es el tema para que hagas una dedicatoria a "los valientes" que lo están cursando?
No es tan difícil. Al menos no las primeras partes. Hay algunas estructuras que son un poco más complicadas de visualizar. Sólo intento saludar a las personas del futuro que vean esto mientras estudian para su examen xD
@@makigas Vengo del futuro! xD
Oh gracias men.
En el minuto 2:37 dices que "Los nodos no tienen por qué guardarse todos juntos en memoria, como ocurre con los arrays."
Mi pregunta es: ¿En C van todos seguidos?, en ese caso, imagína que tenemos un array de 2.000.000 de datos (un poco tocho) y no hay ningún "hueco" con esa cantidad de memoria que esté totalmente vacío pero si hay 1.000.000 de huecos por un lado, un par de huechos ocupados con datos ajenos al array y después otro 1.000.000 de huecos libres, es decir, una especie de fractura que obliga a dividir en dos o más trozos el array, ¿podría dividirse o debería de ir junto todo sin ningún tipo de separación? Gracias.
En C sí, un array tiene todas sus posiciones contiguas en memoria y no hay separación entre elementos. Por eso en parte puedes acceder a un array con aritmética de punteros. Si el array lo declaras de forma estática en tu código el compilador ya se ocupa de que esa región de memoria quede junta. Y si la creas con memoria dinámica, malloc te va a reservar un buffer con posiciones contiguas también.
+Jesús Valera En conclusión no, no se puede, los arrays no tienen que dividirse, van en lugares consecutivos según el tamaño, por eso es que puedes usar indice para apuntar a un elemento, ej: elementos[3] apuntas al cuarto elemento...y por eso es que se declara el tipo del array ej: int elementos[10] Entonces el programa sabrá que para acceder directamente a elemento[3] entonces puede tomar la dirección de memoria en la que se encuentra el primer elemento[0] y avanzar de a 4bytes(tamaño de int en la memoria), entonces supongamos que elemento[0] = &0x0000 entonces elemento[1] = &0x0004, elemento[2] = &0x0008..etc, entonces solamente con lugares consecutivos en memoria es que C puede lidiar con accesos directos a un elemento que especifiques, todo para saber como acceder directamente, para acceder a elemento[3] C hace 4bytes multiplicado por 3 y añade esto a la dirección del arreglo para acceder a la sección de memoria de ese elemento directamente, por esa razón los arreglos no pueden ir quebrados, C no podría manejarlos con su aritmética de punteros, si intentarás hacer un array de tantos elementos el programa se te pondría muy lento por el procesamiento requerido y llenarías la memoria inútilmente con un arreglo que maneja solamente un tipo de dato...
Perfecto ;)
Que estructura de datos usarías para mantener en memoria miles de elementos, por ejemplo, el reporte de ventas del mes, supon que la consulta de base de datos te regresará decenas de miles de registros.
Que estructura de datos se usaría en ese caso, un array, una lista, un arbol?
No lo puedes paginar?
Eres grande cruck :)
eres el puto amo, solo digo eso... XD
Excelente
Se puede crear una lista en la que cada uno de sus nodos formen otra lista?
Yup.
Si alguien me pudiera ayudar le agradeceria, estoy algo perdido.
En JavaScript el tamaño de un array es dinamico, podes agregar tantos elementos como quieras sin necesidad de especificar el largo del mismo.
Tambien podes agregar y quitar elementos en tiempo de ejecucion. Por ejemplo. pop() borra el ultimo elemento y push() inserta uno.
No entendí, lo que pones es correcto, cual es la pregunta 🤔
Como comunicarme contigo nesesito ayuda
Explicas muy bien, lastima que mi maestra piense que con este video, ya puedamos resolver los ejercicios que ella pone :/
Ya. Un saludo a esas y esos profesores que esperan que un vídeo de 10 minutos pueda hacerles su trabajo...
en una lista se puede actualizar un elemento?
Sip
Hola, no me queda muy claro cuando tengo que pedir memoria (con malloc en C o new en C++) y cuando no? Agradecería si alguien me lo puede aclarar
A esta altura entiendes?
@@zeusjean cuando crees un nodo tenes que pedir memoria para el mismo
si quiero clonar que hago?
10:29 Sé que es pseudocódigo, pero la condición del bucle no podría dar una bonita (y odiada) excepción de puntero a nulo? Si la lista es de un elemento, entonces nodo.siguiente será NULL, y no se puede acceder a la propiedad "siguiente" de NULL.
no puedo maldito creer que jalé el curso pasado por no ver la teoría que había e irme de frente a la aplicación (...)
Tiene la voz de Albert Baró jajaj
que complicado. Creo que tengo que aprender bien los arreglos.
pero es que no encuentro la diferencia entonces entre lista y nodo,me confunden
Hubieses llegado 15 años antes y no hubiese pasado por tanto sufrimiento con esto. Profe de mier... XD
del pino no me jales :'v