2013-02-26 113 views
1

我已經聲明的對象節點的隊列與下面的代碼行:Java堆棧鏈表

Queue<Node> queue; 
queue = new LinkedList<Node>(); 

然而,當我宣佈一個堆棧中的Node對象,用棧代替隊列,這不是沒有工作。爲什麼這樣?另外,究竟是什麼

queue = new LinkedList<Node>(); 

是什麼意思?這是否意味着正在創建一個Node對象的鏈接列表,並且可以在Queue中?

我打開課件瞭解數據結構和算法,我是初學者。謝謝!

回答

2

這是因爲java.util.LinkedList中實現java.util.Queue中,但它不是java.util.Stack,儘管它有push和pop方法。堆棧是一個遺留類,它的用法不建議,但如果你仍然想使用它,這是要走的路

Stack<Node> stack = new Stack<Node>(); 
4

在Java中,由於傳統原因,Stack是一個類,而不是接口。所以LinkedList不能被分配給Stack類型的變量。

Deque接口聲明LIFO操作(儘管它也聲明FIFO操作),並且LinkedList實現Deque

當你

queue = new LinkedList<Node>(); 
你創建一個 LinkedList

而是通過類型Queue,使得只有FIFO操作暴露在引用它。這將確保稍後可以通過僅更改上面的行來交換Queue的其他實現。

1

是否表示正在創建節點對象的鏈接列表並且 可以在隊列中?

不,它意味着底層數據結構使用的隊列是一個LinkedList,並且您可以添加一個類型的對象Node

你應該對仿製藥讀了,如果你不熟悉這個構造LinkedList<Node>()

2

Queue<Node> queue表示變量隊列的類型爲「節點隊列」。 Queue是一個不是類的接口。

Java的LinkedList類實現了Queue接口,因此queue = new LinkedList<Node>();完全可以。

Java堆棧是不實現的隊列接口的實際類,所以你不能剛剛替補進去。

+0

謝謝。那麼可以這樣聲明 - Stack intStack = new Stack (); ?在中,Stack類實現了一個整數數組? – 2013-02-26 04:47:15