Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - juancho77

#41
Un arreglo no es una lista enlazada!
#42
jajaj dificil? Pobres los que programan compiladores, navegadores, mapas...
#43
Java / Re: Arbol AVL
12 Mayo 2009, 05:05 AM
Para borrar nodos yo hice esto (siempre con arboles generales, binarios o no):

Código (java) [Seleccionar]

ListaDeHijos = nodo.obtenerHijos();
padreDeNodo=nodo.obtenerPadre();
posicionDeNodo=nodo.obtenerPosicionEnLista();
//borrar el nodo
nodo.establecerHijos(null);
nodo.establecerPadre(null);
//opcion1: un hijo (el primero) toma el lugar del padre
if (listaDeHijos.isEmpty()==false)
{
nuevoHijo=listaDeHijos.obtenerPrimero();
listaDeHijos.eliminarNodo(listaDeHijos.obtenerPrimero());
nuevoHijo.establecerHijos(listaDeHijos);
Para cada nodo de listaDeHijos hacer
    nodo.establecerPadre(nuevoHijo);
padreDeNodo.obtenerHijos().insertarNodoEnPosicion(posicionDeNodo,nuevoHijo);
//opcion2: todos los hijos pasan a ser hijos del padre del eliminado
/*
* padreDeNodo.obtenerHijos().concatenarListas(listaDeHijos); //agrega los nodos hijos a los del padre del eliminado
* Para cada nodo de listaDeHijos hacer
*   nodo.establecerPadre(nuevoHijo);
*/



Para visualizarlo existe un algoritmo muy conocido llamado recorridoEnOrden. Es asi  (para arboles binarios, pero se puede expandir, solo hay que pensar un cachin) :

recorridoEnOrden(nodo v)
if v tiene un hijo izquierdo
    recorridoEnOrden(v.hijoIzquierdo());
hacer algo en v
if v tiene un hijo derecho
    recorridoEnOrden(v.hijoDerecho());


Para dibujarlo, crea un arreglo con todos los nodos visitados en el orden obtenido por recorridoEnOrden. Si lo haces bien, el orden sera de izquierda a derecha en la coordenada x. Luego, modifica el paintComponent de algun elemento (un panel, por ejemplo) y pinta ovalos: la coordenada x del ovalo sera la ubicacion en el arreglo (+1 para ser exactos), y la coordenada y sera el resultado de obtenerAltura(nodo), función recursiva que retorna la altura de un nodo y se define:

obtenerAltura(Nodo v)
si isRoot(v)
   retornar 0
sino retornar 1 + obtenerAltura(v.parent());




Entendeme que te paso idea y algoritmos y no codigo para ser mas claro en la explicacion y ademas porque seguramente tu implementacion requiere datos precisos distintos a los mios (o no, pero es probable que si). Si lo que quieres es algo hecho puedes buscar en internet, o bueno, si insistes te lo paso.   :-*
#44
Java / Re: Arbol AVL
8 Mayo 2009, 01:34 AM
Tengo que hacer eso mismo en estos dias, cuando lo termine te lo subo si aun te hace falta
#45
Java / Re: lista dinamica
5 Mayo 2009, 02:50 AM
Cita de: er_rafael_rafi en  2 Mayo 2009, 18:07 PM
Todo eso lo hace la clase de JAVA LinkedList...pero asi te has enterado bien de como funcionan(yo tambien tengo mi lista propia con las modificaciones que me parecieron)...

Saludos

En la universidad hay toda una materia llama Estructuras de Datos dedicada al estudio de eso que Java ya manda creado.  :rolleyes:
#46
uh ya no me acuerdo como era, pero en el link esta el programa+codigo
#47
Java / Re: help jtable
1 Mayo 2009, 01:17 AM
Me juego a que pregunto alguna estupidez, lo encontró enseguida en el JavaDoc, volvió avergonzado y eliminó todo, aduciendo "error de sistema" y salvando su honra.  :laugh:
#48
Bien, no tienes un problema sencillo en frente. Te cuento que en programación existen Tipos de Datos llamados Mapas que simulan esto que tu quieres resolver. Deberias estudiarlos y te resultara mas sencillo.
Tambien puedes hacerlo por backtracking, agotando cada una de las posibilidades.
O tambien, y creo que lo mas sencillo, crear un mapa de grafos ponderados indicando la distancia entre cada uno y comparando entre ellos. Si es solo para ese mapa, es muy sencillo ya que los caminos son simetricos los mires por donde los mires.

Por ejemplo, si implementas una estructura que tenga un Nodo de Grafo por cada casilla permitida, la solución sería saltar desde el nodo inicial al siguiente, y de alli evaluar para donde seguir basandonse en x e y y la variacion. Una vez finalizado, guardamos y volvemos atras (backtracking), y empezamos de nuevo en otra direccion.
Al final, tomamos todo lo guardado y comparamos. El menor es la distancia minima entre los Nodos de Grafo.

Como dije, no es algo sencillo. Hay implementaciones mas rapidas tambien, pero no tan comunes e interesantes.
#49
Java / Re: lista dinamica
1 Mayo 2009, 00:52 AM
Con lista dinamica se me ocrçurre que deben hacer referencia a Lista Enlazadas. Estas son TDA's organizados como si fuera un arreglo, pero en forma de nodos interconectados. Cada nodo mantiene una referencia de posesion y posicion, y asi se mantienen ordenados en la lista "simulada". Como son nodos, puede agregar cuantos quieras (el poder lo limita la memoria de la pc) y puedes agrandar, achicar, agregar, remover, editar, dinamicamente (en ejecucion)
Consulta un libro de Estructuras de Datos para Java o C++ (generalmente se llaman Data Structures and Algorithms y los encuentras en la biblioteca de la universidad).
#50
Java / Re: Ayuda con practica pls
28 Abril 2009, 05:07 AM
jajajajajajjaajaj
Dios