проверка ссылки на объект узла - PullRequest
0 голосов
/ 03 октября 2011

У меня есть вопрос об этом коде.

class Queue {
    Node first, last
    void enqueue(Object item){
        if(!first){
            last = new Node(item);
            first = last;
        } else {
            last.next = new Node(item);
            last = last.next;
        }
    }
}

Я думаю, я не совсем уверен, что именно последний узел.Когда я пишу строку Node первым, последним, я слышал, что делаю ссылку на объект узла.Что именно это означает?Это указывает на где-нибудь в памяти?Я знаю, что никогда не вызываю конструктор, так что это не новый объект.Не могли бы вы дать мне немного понимания?

А что именно, если (! First) означает?Что проверяет оператор if, поскольку first не является логическим значением?Спасибо!

Я был бы очень признателен за ясную и простую помощь.Спасибо =)

1 Ответ

1 голос
/ 03 октября 2011

Строка Node first, last объявляет две переменные типа Node.Один из них называется first , второй - last .Эти объекты узлов являются ссылочными объектами, поскольку они содержат адрес к данным в памяти, а не сами данные.

Подробнее о ссылках и типах значений: http://cplus.about.com/od/learnc/ss/value.htm

Строка last = new Node(item); фактически вызывает конструктор узла.Новый узел создан, и он содержит элемент, который был передан.

if(!first) проверяет, является ли первый узел пустым.Если он пуст, то этот блок кода выполняется.В противном случае выполняется второй блок.

...