2011-10-03 66 views
0

我对此代码有疑问。检查对节点对象的引用

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检查以来不是布尔值是什么?谢谢!

我非常感谢清晰和简单的帮助。谢谢=)

+0

感谢您的帮助=) – Sasha

回答

1

Node first, last行声明两个类型为Node的变量。其中之一被命名为第一个,第二个被命名为最后。这些节点对象是引用对象,因为它们包含内存中数据的地址,而不是包含数据本身。

更多参考VS值类型:http://cplus.about.com/od/learnc/ss/value.htm

线last = new Node(item);实际上是调用节点的构造。创建一个新节点,它包含传入的项目。

if(!first)检查以查看第一个节点是否为空。如果它是空的,那么该代码块被执行。否则,第二个块被执行。