2011-10-03 53 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)檢查以查看第一個節點是否爲空。如果它是空的,那麼該代碼塊被執行。否則,第二個塊被執行。