java棧的使用 順序棧和鏈棧的區(qū)別是什么?
順序棧和鏈棧的區(qū)別是什么?存儲結構不同:鏈棧動態(tài)分配內存存儲數(shù)據(jù),不浪費內存,存儲的數(shù)據(jù)不連續(xù)。順序堆棧使用固定大小的數(shù)組來保存數(shù)據(jù),當數(shù)據(jù)量較小時會浪費內存,當數(shù)據(jù)量過大時會產生問題,因此存儲的數(shù)據(jù)
順序棧和鏈棧的區(qū)別是什么?
存儲結構不同:
鏈棧動態(tài)分配內存存儲數(shù)據(jù),不浪費內存,存儲的數(shù)據(jù)不連續(xù)。
順序堆棧使用固定大小的數(shù)組來保存數(shù)據(jù),當數(shù)據(jù)量較小時會浪費內存,當數(shù)據(jù)量過大時會產生問題,因此存儲的數(shù)據(jù)是連續(xù)的。
它們之間的具體區(qū)別如下:
順序堆棧的實現(xiàn)基于數(shù)組的基本數(shù)據(jù)結構的使用。數(shù)組中元素在內存中的存儲位置是連續(xù)的,編譯器要求我們在編譯時確定數(shù)組的大小,因此內存利用率不高,數(shù)組空間耗盡導致的溢出問題無法避免。系統(tǒng)將內存分配給數(shù)組后,內存不適用于其他任務。對于鏈棧,我們使用鏈表來實現(xiàn)。鏈表中的元素存儲在不連續(xù)的地址中。因為它是一個動態(tài)內存應用程序,所以我們可以從非常小的內存空間開始。另外,當一個項目沒有使用時,我們可以將內存返回給系統(tǒng)。