punteros y arrays
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);
}
}
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);
}
}
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!!!!!!!
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!!!!!!!
Esa parte no me da error. Lo que me da error es cuando uso arrays. Cómo lo puedo solucionar?
Gracias
Gracias
