Título: Eliminar nodo de lista? Publicado por: monsefoster en 29 Enero 2010, 08:43 am Hola chicos, necesito "aprender" como eliminar un nodo de una lista...tengo un libro pero no entiendo nada :huh:
Tengo que hacerle un menu, pero no hay problema...eso no tengo problema, la cosa es que no se como eliminar el nodo...estoy conciente de lo que tengo que hacer, pero no se como hacerlo en la pc :huh:, me ayudan por favor? lo que tengo y se que lo que estoy tratando de hacer con eliminar esta mal: Código
Código
Código
Agradeceria la ayuda inmensamente, lei algo de un nodo inicial, y anterior...la otra cosa es que no se como referenciar nodos de una lista...probablemente por eso se me hace tan dificil.... Lo que quiero hacer es que el usuario de la posicion del nodo que quiere eliminar y este se elimine... :huh: Título: Re: Eliminar nodo de lista? Publicado por: egyware en 29 Enero 2010, 15:25 pm Hola, excelente hiciste la lista de nodos tu mismo pero no sabes como eliminar la lista, te voy a dar el algoritmo.
Como es una lista de nodos simplemente enlazados, debes encontrar el nodo anterior a borrar y cuando lo encuentres debes hacer esto. //BorrarNodo Nodo anterior; //Nodo anterior al valor a borrar Nodo borrar; //Nodo a borrar borrar <- anterior.siguiente; anterior.siguiente <- anterior.siguiente.siguiente; Y con eso lo borrar ahora para buscarlo Debes tener precaución que la lista no este vacia y que el siguiente no sea nulo. Nodo nodo; valorBorrar <- 18; si nodo.siguiente != nulo entonces si nodo.siguiente.valor = valorBorrar entonces borrarNodo final si final si Es mas o menos asi :rolleyes: Saludo Título: Re: Eliminar nodo de lista? Publicado por: monsefoster en 30 Enero 2010, 23:10 pm Sinceramente no tengo idea de como hacerlo...
Lo que esta alli lo hizo el prof en la practica... y pretende ponerlo para el examen... Intente hacer algo pero no estoy ni cerca... No tengo idea de como se guarda la lista en memoria...no se como acceder a cada uno de los elementos de esta y eso me complica... no es como un arreglo que con v[0] se que tengo el primer elemento del arreglo... y esta todo puesto bajo v, donde cada [] indica la direccion de memoria donde esta ese elemento... lo de la posicion no es dificil, pues ya lo hice antes, pero no entiendo como se supone que debo borrar el nodo... Lo que me dijiste, ya lo tengo en el libro y sigo entiendiendo nada :huh: Título: Re: Eliminar nodo de lista? Publicado por: Debci en 30 Enero 2010, 23:21 pm Sinceramente no tengo idea de como hacerlo... Intenta guardar esa lista en un archivo de texto y modificarlo desde este, osea tu lo parseas, todos los nodos a xml y luego organizas, eliminas e incluse les das id para clasficarlos correctamente.Lo que esta alli lo hizo el prof en la practica... y pretende ponerlo para el examen... Intente hacer algo pero no estoy ni cerca... No tengo idea de como se guarda la lista en memoria...no se como acceder a cada uno de los elementos de esta y eso me complica... no es como un arreglo que con v[0] se que tengo el primer elemento del arreglo... y esta todo puesto bajo v, donde cada [] indica la direccion de memoria donde esta ese elemento... lo de la posicion no es dificil, pues ya lo hice antes, pero no entiendo como se supone que debo borrar el nodo... Lo que me dijiste, ya lo tengo en el libro y sigo entiendiendo nada :huh: Saludos Título: Re: Eliminar nodo de lista? Publicado por: egyware en 30 Enero 2010, 23:26 pm :rolleyes:
Para acceder a la lista es facil Código
Saludos PS: Intenta guardar esa lista en un archivo de texto y modificarlo desde este, osea tu lo parseas, todos los nodos a xml y luego organizas, eliminas e incluse les das id para clasficarlos correctamente. Saludos Estas matando una mosca con un cañon hombre es mas facil como crees. Título: Re: Eliminar nodo de lista? Publicado por: Debci en 30 Enero 2010, 23:34 pm :rolleyes: Que tiene de dificil? Enserio, no le veo complicación.Para acceder a la lista es facil Código
Saludos PS: Intenta guardar esa lista en un archivo de texto y modificarlo desde este, osea tu lo parseas, todos los nodos a xml y luego organizas, eliminas e incluse les das id para clasficarlos correctamente. Saludos Estas matando una mosca con un cañon hombre es mas facil como crees. Saludos Título: Re: Eliminar nodo de lista? Publicado por: egyware en 30 Enero 2010, 23:59 pm Me referias pasarlo a XML eso seria matar una mosca con un cañon.
Título: Re: Eliminar nodo de lista? Publicado por: monsefoster en 31 Enero 2010, 01:40 am Sigo sin entender pero nada... y lo peor que no soy la unica, alguien mas de mi clase entro y vio mi post y quedamos igual.. :huh:
No entiendo a quien se le ocurre, dar una sola clase, y pretender ponerlo en la prueba, sin tener otra oportunidad para preguntar! Título: Re: Eliminar nodo de lista? Publicado por: egyware en 31 Enero 2010, 02:41 am Me recuerda lo que paso a mis compañeros, el profe paso una clase y evaluo de inmediato, gracias que yo sabia java de antes y que hice para remediarlo les enseñe ;D
Bucha yo no quiero darte la solucion al problema aunque me la se mas bien quiero que aprendas. Primero hay que hacer el algoritmo que recorra toda la lista Código
Edit: Bueno como ya has visto el bucle anterior y que reclama L-EYER tu debes saberlo pero para encontrar el nodo anterior. Mira en la figura 1) es una representacion grafica, los numeros corresponde a value y las flechas a next que es que apunta a la siguiente clase (igual como los punteros de C) (http://anubis.inf.udec.cl/~egyware/imagenes/explicacionBorrarNodo.jpg) En la figura 2) como queremos borrar el numero 5 entonces con el bucle anterior buscamos el nodo anterior el cual es 4. En la figura 3) que lo que hacemos es sacar 5 de la lista para eso hacemos que 4 apunte al al siguiente 5, osea siguiente siguiente de 4. En nuestro algoritmo quedará anterior.siguiente = anterior.siguiente.siguiente En la figura 3.a) se ve que el nodo que desenlazamos todavia apunta a parte de la lista entonces hacemos que apunte a null para definitivamente sacarlo en la figura 3.b) queda solito :) para borrarlo de la memoria pero como es Java basta con perder toda referencia al puntero para que se valla a la basura (Garbage Colector de Java en caso de C/C++ free/delete). Esto es valido tanto como C/C++, Java o lenguaje preferentemente que use punteros. Tu algoritmo de borrado en Java quedaria asi continuando con lo que te deje Código
Bueno eso seria saludos Título: Re: Eliminar nodo de lista? Publicado por: Leyer en 31 Enero 2010, 02:50 am obviamente eso ya lo tiene :xD lo que no sabe es como eliminarlo
PD: pregunto lo hiciste tu o ses algo que te dio el prof por que la solucuion seria y por que no usas un generico class Lista<T> {} Título: Re: Eliminar nodo de lista? Publicado por: egyware en 31 Enero 2010, 02:56 am L-Eyer no seas impaciente ademas no quiero darle la tarea hecha si se la doy hecha le ira mal en el certamen >:(
Título: Re: Eliminar nodo de lista? Publicado por: Leyer en 31 Enero 2010, 03:09 am ;D
Título: Re: Eliminar nodo de lista? Publicado por: egyware en 31 Enero 2010, 03:15 am Ahi te deje la respuesta dentro del mismo hilo unos cuantos post antes espero que te sirva y aprendas como hacerlos, sinceramente los nodos de C son mas faciles de comprende que java porque la mayoria cree que Java no existen los punteros y realmente los objetos de java son punteros :laugh:
http://foro.elhacker.net/java/eliminar_nodo_de_lista-t282749.0.html;msg1395878#msg1395878 Saludos Título: Re: Eliminar nodo de lista? Publicado por: monsefoster en 9 Febrero 2010, 02:01 am Y continuo con lo del nodo...
lo estoy haciendo mal probablemente... Código
Ayuda! :huh: Título: Re: Eliminar nodo de lista? Publicado por: Leyer en 9 Febrero 2010, 22:15 pm y si le colocas al numero un 0 en ves de null y que al mostrar la lista practicamente ese numero este eliminado?
Un Saludo! Título: Re: Eliminar nodo de lista? Publicado por: monsefoster en 10 Febrero 2010, 03:02 am No entendi muy bien lo que quisiste decir...
:huh: Título: Re: Eliminar nodo de lista? Publicado por: Leyer en 10 Febrero 2010, 03:09 am ni yo puedo aplicar lo que dijo egyware suena facil decirlo pero hacerlo en el code puff :¬¬ yo estuve viendo pero no le entendi pero nada :xD
Código
a lo que me refiero es que los que esten en 0 osea al valor que vas a aliminar colocalo en 0 y tomalos como si estubieran eliminados y muestras la lista Título: Re: Eliminar nodo de lista? Publicado por: egyware en 10 Febrero 2010, 16:32 pm ni yo puedo aplicar lo que dijo egyware suena facil decirlo pero hacerlo en el code puff :¬¬ yo estuve viendo Y eso que te di la solución, COPY/PASTE osbiamente sin tu menú vaya que has salido porfiado mi idea no era solucionarte el codigo es que APRENDAS como es toda esta cosa a nosotros el profresor nos hizo dibujar todo eso antes de aplicar el codigo y aprendi creo que el 90% de la clase aprendio bien aplicar los nodos. Citar a lo que me refiero es que los que esten en 0 osea al valor que vas a aliminar colocalo en 0 y tomalos como si estubieran eliminados y muestras la lista Pero siguen en la lista ocupando memoria, eso no es eliminar eso es ocultar -.-Código Bueno eso seria para borrar espero no haberme equivocado ya que no lo he probado, fijate que explique el codigo y use el mismo algoritmo que propuse antes. Te recomiendo ALTAMENTE que hagas una representacion grafica (como el dibujo que te mostre antes) y elijas un nodo cualquiera, y que escribas los pasos con cualquier algoritmo de como borrarlo. Haslo!!! Saludos |