Buenas explicaciones del tema pero considero que se llevan a cabo con demasiada velocidad, prácticamente sin pausas entre método y método. Además, en ningún momento se ejecuta el código con ejemplos para reforzar la explicación y facilitar el aprendizaje. Buen trabajo, y gracias por subir este tipo de contenido!
Te felicito explicas de una manera excepcional. Hoy descubrí este canal y estoy muy contento de haberme suscrito por que me doy cuenta que tienes contenido de calidad. Nuevamente felicidades por estos tutoriales !
Amigo GRACIAS. Estuve horas... abstraer estas cosas, al principio te rompes la cabeza pero luego quedan. Sigue así una joya tus videos, de paso me ayudaron a comprender el libro de Joyanes.
Pienso igual que Allan, a ver si por favor puedes enseñarnos el Main Daniel la verdad es que facilitaría las cosas. Por otra parte felicitarte por esta serie tan buena de Estructuras de Datos. Un saludo
Excelente video explicativo me sirvio mucho, pero sugiero para el que este aprendiendo que trate de entenderlo mediante graficos, osea en un cuaderno ir representando situaciones de agregacion o eliminacion de nodos, asi se hace muchisimo mas facil entender como se conectan los nodos de la lista.
Entendí el vídeo muy bien, lo que no le entiendi a mi profe de la uni ,muchas gracias... Pero lo que no entiendo aún es, Para que se usa esto? Es decir, cómo se aplica esto en el desarrollo de un software, programa o app?
La parte de programación hoy día vale para poco más que para sacar adelante una prueba técnica y que te contraten. Salvo lugares especializados, normalmente hoy día se tira del propio lenguaje o de su biblioteca estándar, que ya traen las estructuras hechas, aunque hay que saber juzgar y ver si toca usar una lista, una cola, una pila…
Hola, una pregunta. Cuando creas un nuevo objeto de tipo nodo. Éste reconoce que es diferente a los demás por la información contenida a pesar que todos los Objetos(nodo) tiene el mismo nombre? Imagino que así es, pero por qué?. Saludos. y Excelente video.
Tengo entendido que cuando creas un nodo estas creando un nuevo objeto en una dirección de memoria, también que cuando se crea un nodo u objeto dentro de un método no hay problemas, pero cuando se crea un nodo u objeto fuera de los métodos ocurre un error. ¿Estoy en lo correcto? y entonces, ¿ésto se debe por el Object.hashCode? Saludos y gracias por responder.
Está explicado en C en el capítulo anterior, precisamente. Usar listas nativas en la vida real está bien, pero precisamente la gracia de este vídeo está en explicar cómo construir una lista de cero, no usar la que te da Java. Por otro lado, sí, se puede hacer con genéricos si se cambia "Libro" por "T" y "class Lista" por "class Lista". Punto. Eso no es lo importante, es la implementación de esos métodos.
pues si tiene sentido ejemplo: yo no se C pero si Java y quiero estudiar estructuras me dices que tengo que aprenderme C? yo no lo veo asi, es mejor tener en ambos lenguajes
Encontre un detalle a la hora de insertar un nodo en la posicion 1. Lo que hago es lo siguiente: InsertarAlInicio(Libro1) insertarAlFinal(Libro2) insertarEnPosicion(0, Libro 4) insertarEnPosicion(1, Libro3) Resulta que el algoritmo, al entrar en el while() el puntero en automatico se posiciona en 1 porque contador=0 y 0
A quien le pueda servir. Hice un repositorio con este ejemplo pero agregando algunos detalles que se omitieron en el video aparte del mencionado en mi comentario anterior (tiene muchos otros detalles que se pasan por alto). github.com/eduardoxcruz/Java_DataStructures/blob/master/src/com/eduardo/linkedlist/BookList.java
Main public static void main(String[] args) { Lista2 lista=new Lista2(); lista.insertarPrincipio(2); lista.insertarPrincipio(1); lista.insertarFinal(3); lista.insertarPrincipio(4); lista.imprimir(); } La idea con la que esta hecho el vidEo seria enviarle un libro ,yo no me complique y lo combie por un entero.
mport java.util.*; public class operaciones_con_listas_simp_enlazadas{ public static void main (String[] args) { Lista lista = new Lista(); Scanner s = new Scanner(System.in); String titulo = s.nextLine(); String autor = s.nextLine(); String isbn = s.nextLine(); Libro libro = new Libro(titulo,autor,isbn); lista.InsertarFinal(libro); System.out.println(""+lista.obtener().getTitulo()); titulo = s.nextLine(); autor = s.nextLine(); isbn = s.nextLine(); Libro libro2 = new Libro(titulo,autor,isbn); lista.InsertarFinal(libro); System.out.println(""+lista.obtener().getTitulo()); } } hi un intento de comoo meter los datos desde el main y nunca salio y me guie con mas tutoriales de ese canal
no entiendo de qué me sirve esto? si ya existen map, list, array, hasmap con key etc. Qué sentido tiene aprender esto si ya existen soluciones no entiendo el porqué nos dan esto en las universidades
Es un poco como el dilema de "por qué debo aprender matemáticas si la calculadora las sabe hacer por mi". No siempre van a estar esas estructuras en la stdlib del lenguaje, si es que tiene stdlib el lenguaje que estás usando. Es la diferencia entre la Ciencia de la Computación y simplemente programar a secas. (Que no quiere decir que no esté secretamente un poco de acuerdo contigo)
Si se quiere dar solución a un problema del mundo real se necesita modelar, hacer o conocer como funcionan este tipo de estructuras te facilita ese paso
No hay duda que eres bueno, pero si estamos viendo este tutorial es porque somos principiantes, por lo menos la mayoría de nosotros. Vas demasiado rápido...
A mi igual me cuesta pero esta bien explicado, lo que yo hago es pausar el video ejemplo en la explicacion de insertar nodo al final, pienso en la teoria o sea que es lo que quiero lograr con eso con esa funcion insertarFinal() luego con mi cuaderno grafico hago una lista de 3 nodos y voy haciendo dibujos de lo que esta pasando en el codigo, no se si me explique bien pero creo que ver todo el video sin poner pausa y esperar entender a la primera es una error que cometemos siempre yo en este video me demore como una hora en llegar a la mitad, suerte ojala que alguien le sirva
Interesante ejercicio, pero debiste correrlo porque en teoría no se ve ningun error pero es mejor asegurarse de que corra, voy a realizarlo y te comento gracias por el aporte.
Tremendo Amigo! Sos muy grosso Makigas!! Te felicito y te agradezco. No osbtante... Mientras venía siguiendo tu video y escribiendo el código a la par tuya, yo iba restando siempre 1 a n, aún cuando tú no lo hacías; esto debido a que yo interpretaba que si, por ejemplo, n=5, y contador empieza desde 0 (o sea, primer elemento, contador = 0), entonces para detener el puntero en el 4to elemento, debo hacerlo cuando contador = 3 (n-1). Del mismo modo, si quiero pararme en el nodo anterior al nodo objetivo (por ejemplo, para borrar un nodo intermedio), debo pararme en n-2, no en n-1. En el minuto 15:18 del video, parece confirmarse mi teoría, quedando comprobado que el tratamiento que le estabas dando al valor "n" es el equivocado. Si estoy equivocado, por favor, házmelo saber. Abrazo y 1.000.000 de gracias por tus clases, que son simplemente MA-GIS-TRA-LES!
Exacto amigo! yo igual me di cuenta puesto que cuando le vas a preguntar al usuario que libro quieres eliminar el no te va decir que quiere eliminar el libro "0 "(En el método de Elimnarlibro se ve claramente que trata como primer libro a la variable n=0) Así que yo igual tengo la misma duda y si estoy mal por favor corrijan me!!! un saludo :)
Hey que mas, como entendi la pregunta creo que no hay necesidad de crear uno, ya que estamos creando una lista que esta enlazada, que solamente va en una direccion y que solo tiene un enlace , o en que parte hace falta el nodo donde se deba guardar el inicio?
No entiendo como el nodo "siguiente" en unas partes se usa como tipo de dato y en otras partes parece ser un metodo :( Es decir arriba lo instancias como una clase no? "Nodo siguiente = null;"... pero mas abajo se usa como metodo? "nodo.siguiente; / puntero.siguiente;" alguien ayuda :c
el codigo igual se podria simplificar haciendo que siguiente sea privado y creando un setter / getter en vez de acceder y modificar directamente su valor. de esta forma se puede incrementar el valor de la variable "longitud" en el setter accediendo a la variable longitud del pariente (solo una idea para experimentar una factorizacion del codigo propuesto). Los mismo al getionar el reemplazo o borrado de algun nodo (al modificar el siguiente de un nodo)... a verificar :-) tambien se puede separar el bucle que recorre la lista en una funcion separada para no tener que repetir el mismo codigo multiples veces
En eliminar ultimo en vez de copiar el código de eliminarPrincipio, invoca el método para que se module mejor, es solo una sugerencia pero de resto muy buen materia felicitaciones.
Seguramente, pero como parte de la idea es reiterarme sobre cómo funcionan a nivel teórico los algoritmos que hay detrás de estas estructuras para que de forma subconsciente se le quede a quien vea el vídeo para aprender pues me viene bien repetirme xD
Crear una lista de números aleatorios. Insertar los nuevos nodos por la cabeza de la lista. Una vez creada la lista, se han de recorrer los nodos para mostrar los números pares.
Para que tengas la referencia de los otros nodos y puedas recorrerlos o agregar nuevos, como una lista agrego un nodo y en su siguiente puede ser null o tener otro nodo
Habrá alguna manera de ingresar 10 numeros positivos y negativos para que después muetre por pantalla la suma de cuantos numeros positivos y negativos hay? no logro realizarlo