2015-05-26 1 views
-4

В чем разница между этими утверждениями?Как выбрать правильные, если утверждения в связанном списке?

  1. if (current.next!=null)

  2. if (current!=null)

+0

первый оператор проверяет, есть ли у вас следующий элемент или нет, второй оператор проверяет, является ли текущий элемент нулевым! – Lrrr

ответ

-1

Я предполагаю, что вы итерацию список, и вы хотите знать, когда вы в конце связанного списка. Если у Вас есть следующие:

if (current.next!=null){ 
    current = next 
} 

, то это не имеет значения. они оба хороши. учитывая, что current никогда не будет null.

1

Рассмотрим следующий Linked List:

HEAD ---> ["value2" | -]--> ["value3" | -]--> ["last_value" | null] 

Допуская current указывает на "Value3":

HEAD ---> ["value2" | -]--> ["value3" | -]--> ["last_value" | null] 
           ↑ 

затем current.next != null является true, так как current.next на самом деле "следующий" узел.

Теперь давайте предположим, что current переехал в «last_value», теперь мы будем иметь:

HEAD ---> ["value2" | -]--> ["value3" | -]--> ["last_value" | null] 
                ↑ 

Теперь current != null является true тогда current.next является null (что является признаком того, что нет никаких больше узлов).

Так что «Правильно выбрать», если утверждение не является хорошим вопросом, поскольку это действительно зависит от того, что вы хотите проверить, это две разные проверки.

Смежные вопросы