Java - Inserccion por referencia Listas Enlazadas

 
Vista:
sin imagen de perfil
Val: 33
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Inserccion por referencia Listas Enlazadas

Publicado por Dany (16 intervenciones) el 29/11/2018 17:17:01
Hola a todos,

Bueno tengo este hilo: https://www.lawebdelprogramador.com/foros/Java/1676626-Impresion-Lista-muestra-caracteres-especiales.html

Pero hice otra pregunta en el mismo hilo, pero creo no es lo correcto por ello la publico aqui.

Necesito agregar un elementoa la lista por referencia, es decir el usuario ingresara despues de que numero quiere ingresar el elemento, estoy trabajando con el metodo pero me muestra error, este es el metodo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
///Metodo agregar por referencia
public void InsPorReferencia(int Elemento){
        // Define un nuevo nodo.
        Nodo Nuevo = new Nodo(Elemento,Referencia);
    // Agrega al valor al nodo.
        Nuevo=Nuevo.Sig;
        // Verifica si la lista contiene elementos
        if (!EstaVacia()) {
                // Crea ua copia de la lista.
                Nodo temporal= Inicio;
                // Recorre la lista hasta llegar al nodo de referencia.
                while (temporal.Dato!= Referencia) {
                    temporal = temporal.Sig;
                }
                // Crea un respaldo de la continuación de la lista.
                Nodo Sig = temporal.Sig;
                // Enlaza el nuevo nodo despues del nodo de referencia.
                temporal.Sig=Nuevo;
                // Une la continuacion de la lista al nuevo nodo.
                Nuevo.Sig=Sig;
 
                // Incrementa el contador de tamaño de la lista.
                tamanio++;
            }
        }

El error aparece en la linea del While
bad operand types for binary operator "! ="
first type int
second type: Node

Si alguien puede ayudarme se lo agradeceria.

Saludos

DS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Inserccion por referencia Listas Enlazadas

Publicado por Tom (1831 intervenciones) el 29/11/2018 19:41:03
Lo primero es que no puedes comparar un int con un Node, eso te lo dice bien claro el mensaje del compilador.
Aplica la lógica, ¿ no deberías comparar temporal.Dato con Referencia.Dato (a mí me parece que es lo más fácil) ?
Más, no denomines las variables con mayúsculas, crea confusión y queda feo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 33
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Inserccion por referencia Listas Enlazadas

Publicado por Dany (16 intervenciones) el 29/11/2018 19:49:06
Si, corregi el error pero al ejecutar el programa e ingresar despues de donde quiero ingresar el elemento me da error:

run:
Exception in thread "main" java.lang.NullPointerException
at asesorialistas.Lista.InsPorReferencia(Lista.java:106)
at asesorialistas.Principal.main(Principal.java:98)
C:\Users\rz9c0s\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 8 seconds)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Lista
/*----------------------------------------------------------------------------*/
///Metodo agregar por referencia
public void InsPorReferencia(int Elemento){
        // Define un nuevo nodo.
        Nodo Nuevo = new Nodo(Elemento,Referencia);
    // Agrega al valor al nodo.
        Nuevo=Nuevo.Sig;
        // Verifica si la lista contiene elementos
        if (!EstaVacia()) {
                // Crea ua copia de la lista.
                Nodo temporal= Inicio;
                // Recorre la lista hasta llegar al nodo de referencia.
                while (temporal != Referencia)  {
                    temporal = temporal.Sig;
                }
                // Crea un respaldo de la continuación de la lista.
                Nodo Sig = temporal.Sig;
                // Enlaza el nuevo nodo despues del nodo de referencia.
                temporal.Sig=Nuevo;
                // Une la continuacion de la lista al nuevo nodo.
                Nuevo.Sig=Sig;
 
                // Incrementa el contador de tamaño de la lista.
                tamanio++;
            }
        }
 
//Main
 
case 8:
        Elemento=Integer.parseInt(JOptionPane.showInputDialog(null,"Ingresa el "+" elemento despues de ","el elemento",
        JOptionPane.INFORMATION_MESSAGE));
        if (Listita.BuscarElemento(Elemento)==true) {
        /*JOptionPane.showMessageDialog(null, "El elemento " + Elemento + " si esta en la lista",
                "nodo encontrado",JOptionPane.INFORMATION_MESSAGE); */
        Listita.InsPorReferencia(Elemento);
        }else{JOptionPane.showMessageDialog(null, "El elemento " + Elemento + " no esta en la lista",
                    "nodo no encontrado",JOptionPane.INFORMATION_MESSAGE);
        }
    break;

Error en esta linea:

Nodo Sig = temporal.Sig;

No logro entender donde esta el error

DS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Inserccion por referencia Listas Enlazadas

Publicado por Tom (1831 intervenciones) el 29/11/2018 20:31:13
En esa línea, temporal vale null.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 33
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

Inserccion por referencia Listas Enlazadas

Publicado por Dany (16 intervenciones) el 29/11/2018 20:40:20
Como si vale null?

El progrma al inicio no tiene elementos los agrego.

Despues con el case 8 la idea es indicar despues de que elemento quiero insertar el elemento nuevo, si no existe entonces enviar mensaje.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar