我已經聲明的對象節點的隊列與下面的代碼行:Java堆棧鏈表
Queue<Node> queue;
queue = new LinkedList<Node>();
然而,當我宣佈一個堆棧中的Node對象,用棧代替隊列,這不是沒有工作。爲什麼這樣?另外,究竟是什麼
queue = new LinkedList<Node>();
是什麼意思?這是否意味着正在創建一個Node對象的鏈接列表,並且可以在Queue中?
我打開課件瞭解數據結構和算法,我是初學者。謝謝!
我已經聲明的對象節點的隊列與下面的代碼行:Java堆棧鏈表
Queue<Node> queue;
queue = new LinkedList<Node>();
然而,當我宣佈一個堆棧中的Node對象,用棧代替隊列,這不是沒有工作。爲什麼這樣?另外,究竟是什麼
queue = new LinkedList<Node>();
是什麼意思?這是否意味着正在創建一個Node對象的鏈接列表,並且可以在Queue中?
我打開課件瞭解數據結構和算法,我是初學者。謝謝!
這是因爲java.util.LinkedList中實現java.util.Queue中,但它不是java.util.Stack,儘管它有push和pop方法。堆棧是一個遺留類,它的用法不建議,但如果你仍然想使用它,這是要走的路
Stack<Node> stack = new Stack<Node>();
在Java中,由於傳統原因,Stack
是一個類,而不是接口。所以LinkedList
不能被分配給Stack
類型的變量。
Deque
接口聲明LIFO操作(儘管它也聲明FIFO操作),並且LinkedList
實現Deque
。
當你
queue = new LinkedList<Node>();
你創建一個
LinkedList
而是通過類型Queue
,使得只有FIFO操作暴露在引用它。這將確保稍後可以通過僅更改上面的行來交換Queue
的其他實現。
是否表示正在創建節點對象的鏈接列表並且 可以在隊列中?
不,它意味着底層數據結構使用的隊列是一個LinkedList,並且您可以添加一個類型的對象Node
你應該對仿製藥讀了,如果你不熟悉這個構造LinkedList<Node>()
Queue<Node> queue
表示變量隊列的類型爲「節點隊列」。 Queue
是一個不是類的接口。
Java的LinkedList類實現了Queue接口,因此queue = new LinkedList<Node>();
完全可以。
Java堆棧是不實現的隊列接口的實際類,所以你不能剛剛替補進去。
謝謝。那麼可以這樣聲明 - Stack intStack = new Stack (); ?在中,Stack類實現了一個整數數組? –
2013-02-26 04:47:15