punteros y arrays

lomeraniel
09 de Noviembre del 2005
Hola a todos:

Tengo un problema. Estoy codificando el algoritmo de Huffman (bueno, al menos lo intento). Para hacerlo, voy a crear una lista (un árbol más bien). El proceso será coger las probabilidades y meter cada una en una lista. Para seguir el algoritmo de huffman hay que agruparlas y sumarlas según unas normas. Para hacerlo hay que buscar las menores de ellas. A mí se me ocurrió que podía meterlas en un array de punteros, y ordenar ese array (por el método de la burbuja). Pero tengo un problema. Hice una pequeña prueba con números enteros, para ver cómo iba. Y funcionaba. Pasé a incluir esa parte en el programa "grande". Y ahí dio fallo de punteros. A partir de ahí el programa pequeño también empezó a darme los fallos. Alguien podría por favor, probar el código que tengo para ver si le pasa lo mismo? Incluyo dos clases, una con asignación de una sola lista, que funciona, y el del array. El programa casca al asignar el primer elemento del array. Gracias

Elena

class TipoNodo
{
public int a;
public TipoNodo sig;
}

public class Ordenacion_pteros
{
public static void main(String args[])
{
TipoNodo NodoCabeza = new TipoNodo;
NodoCabeza=null;
NodoCabeza.a=2;
System.out.println(NodoCabeza.a);
}
}


class TipoNodo
{
public int a;
public TipoNodo sig; //puntero que indica el siguiente
}

//ordenación por burbuja
public class Ordenacion_pteros
{
//método de ordenación por burbuja
public static void main(String args[])
{
TipoNodo[] NodoCabeza = new TipoNodo[5];
for (int i=0;i<=4;i++) NodoCabeza=null;
NodoCabeza[0].a=2;
NodoCabeza[1].a=1;
NodoCabeza[2].a=4;
NodoCabeza[3].a=4;
NodoCabeza[4].a=0;
for (int i=0;i<=4;i++)
{
int menor=NodoCabeza[i].a;
for (int k=i;k<=4; k++)
{
if (NodoCabeza[k].a<menor)
{
int aux = NodoCabeza[i].a;
NodoCabeza[i].a=NodoCabeza[k].a;
NodoCabeza[k].a=aux;
}
}
}
System.out.println(NodoCabeza[0].a+" "+NodoCabeza[1].a+" "+NodoCabeza[2].a+" "+NodoCabeza[3].a+" "+NodoCabeza[4].a);
}
}

nicokiki
09 de Noviembre del 2005
Hola!!!!

Antes q nada no anejas punteros en Java....

TipoNodo NodoCabeza = new TipoNodo;
NodoCabeza=null;
NodoCabeza.a=2;

Esto deberia tirar NullPointerException... ademas de q estas violando un principio de la OOP y de diseño de clases tambien...

Luego volves a hacer lo mismo (asignar null y despues usar algo q esta en null....)

Por lo q veo podes llegar a venir de C# donde las cosas no "son iguales..."

Salu2!!!!!!!

lomeraniel
09 de Noviembre del 2005
Esa parte no me da error. Lo que me da error es cuando uso arrays. Cómo lo puedo solucionar?

Gracias

nicokiki
09 de Noviembre del 2005
Hola!!!

Si tenes algo asi:

Clase objeto = new Clase();
objeto = null;

objeto.toString();

Esto SI da NullPointerException.
Con los arrays haces lo mismo => tambien esta Mal!!

Salu2!!!!!!!!!