2012-02-19 14 views
6

Tengo una lista vinculada en la que el primer nodo contiene un objeto nulo. significa que firstNode.data es igual a null, firstNode.nextPointer = null, firstNode.previousPointer = null.compruebe si un objeto es nulo

Y quiero comprobar si firstNode es nulo o no. Así que tried-

if(list.firstNode == null){ 

      //do stuff   
     } 

pero esto no funciona?

También intenté igual. ¿Alguna sugerencia?

He intentado imprimir. Y tengo como-

{null} - firstNode

+4

Por favor explique "no funciona" en mayor detalle. –

+0

No va dentro de ese bucle. Eso es lo que quiero decir. – AKIWEB

+0

Entonces quizás 'list.firstNode' no es igual a' null'? –

Respuesta

13

Creo que su firstNode es nonull, pero sus campos son. Intentar algo como esto:

if (list.firstNode.data == null) { 
    //do stuff   
} 
0

Usted comprobación de list.firstNode siendo nula. Qué quiere decir para comprobar si hay

list.firstNode.data==null 
1

¿Usted intentó

if (list.firstNode.data == null) { /* Do stuff */ } 
0

La respuesta está en la pregunta. Usted dijo:

have a linked list in which first node contains null object. **means firstNode.data is equal to null**, 

Esto significa que usted debe hacer lo siguiente en su lugar:

if(list.firstNode.data == null){ 
    //do stuff   
} 
0

Me parece que su pregunta está relacionada con el procesamiento de una lista doblemente enlazada.
Para verificar si el uso está vacío: (list.firstNode.next == list.firstNode.previous) esto es true para una lista doblemente enlazada vacía.

0

Puede comprobar si todos los campos del nodo son nulos:

Node firstNode = list.firstNode; 
if(firstNode.data == null && 
    firstNode.nextPointer == null && 
    firstNode.previousPointer == null) { 
    //Do stuff 
} 

o para evitar la repetición de códigos, puede crear un método de instancia isNull() para hacer la prueba o crear un objeto nulo y anula el método equals en tu clase Node para verificar si un nodo es igual al nodo nulo como lo describiste.

class Node<E> { 
    //The null node, assuming your constructor takes all three values. 
    public static final Node NULL = new Node(null, null, null); 

    //Fields here with constructors etc. 

    @Override 
    public void equals(Object obj) { 
     if(!obj instanceof Node) return false; 
     Node<?> node = (Node<?>)obj; 
     if(node.data.equals(this.data) && 
      node.nextPointer == this.nextPointer && 
      node.previousPointer == this.previousPointer) { 
      return true; 
     } else { 
      return false; 
     } 
    } 

Luego, cuando se desea comprobar si un nodo es nulo que puede hacer:

if(list.firstNode.equals(Node.NULL)) { 
    //Do stuff 
}