2012-10-05 53 views
1

堆棧實現。 我們如何在Node類中創建一個「Node」類型的fild? 「Node」類型的變量「first」如何包含「Node」類型的fild? 謝謝大家幫忙我們如何在Node類中創建一個「Node」類型的fild?

public class Stack 
{ 
private Node first = null; 

private class Node 
{ 
    String item; 
    Node next; 
} 

public boolean isEmpty() 
{ 
    return first == null; 
} 

public void push(String item) 
{ 
    Node oldFirst = first; 
    first = new Node(); 
    first.item = item; 
    first.next = oldFirst; 
} 

public String pop() 
{ 
    String item = first.item; 
    first = first.next; 
    return item; 
} 

}

+1

這完全不清楚爲什麼你認爲這*不起作用。我懷疑你應該讓'Node'成爲一個靜態嵌套類... –

+0

我不明白這個問題。如何 - 你在那裏有代碼,對吧? – eis

+0

該代碼的作品,但我沒有得到的原則 –

回答

1

的Java引用(或指針)處理對象。

class Node { 
    String value; 
    Node next; 
} 

鑑於這一類的一個實例,它的身體需要8個字節的存儲器(在32位機器上)。前4個字節存儲一個指向字符串的指針,接下來的4個字節指向另一個Node對象(或null)。

1

Node是遞歸數據結構。想象一下,你有一個列表。列表可以是空的,或者有第一個元素和一個休息,其餘的也是一個列表。

在您的Stack類中,您持有第一個Node實例的參考。這個第一個實例由一個String值和一個對下一個Node實例的引用組成。首先,不容易理解一個班級可以擁有同一班級的班級。但這是一個基本的原則。即你有一個班人。 One Person實例可以與其他Person實例關聯。像father。那麼在Person類中包含字段father是很自然的。 father的類型是Person。這不是魔術。這只是模擬類實例之間關聯的方式。這裏唯一特別的是,這些是同一個班級之間的聯繫,而不是兩個不同班級之間的聯繫。

相關問題