2012-02-19 18 views
6

Mam listę połączonych, w którym pierwszy węzeł zawiera obiekt zerowy. oznacza, że ​​firstNode.data jest równe null, firstNode.nextPointer = null, firstNode.previousPointer = null.Sprawdź, czy obiekt jest pusty

Chcę sprawdzić, czy firstNode ma wartość null, czy nie. Więc wypróbowaną

if(list.firstNode == null){ 

      //do stuff   
     } 

ale to nie działa?

Próbowałem też równa się. Jakieś sugestie?

Próbowałem drukowania. I mam as-

{null} - firstNode

+4

Proszę wyjaśnić „nie działa” w sposób bardziej szczegółowy. –

+0

To nie wchodzi w tę pętlę. To miałem na myśli. – AKIWEB

+0

Więc może 'list.firstNode' nie jest równy' null'? –

Odpowiedz

13

myślę, że nie jest firstNodenull, ale jego pola są. Spróbuj czegoś takiego:

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

możliwość sprawdzania list.firstNode jest zerowa. Czy to znaczy, aby sprawdzić

list.firstNode.data==null 
1

Próbowałaś

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

Odpowiedź jest w pytaniu. Mówiłeś:

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

Oznacza to, że należy wykonać następujące czynności zamiast:

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

Wydaje mi się, że pytanie jest związane z przetwarzaniem w podwójnie połączonej listy.
Aby sprawdzić, czy jest puste: (list.firstNode.next == list.firstNode.previous) jest to true dla pustej podwójnie połączonej listy.

0

Można sprawdzić, czy wszystkie pola węzła są nieważne:

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

lub zapobieżenia kodu powtórzenia, można utworzyć metody instancji IsNull(), aby wykonać test lub utworzyć obiekt NULL i nadpisaj metodę equals w klasie Node, aby sprawdzić, czy węzeł jest równy węzłowi zerowemu, jak opisałeś.

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; 
     } 
    } 

Wtedy, gdy chcemy sprawdzić, czy węzeł jest null można zrobić:

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