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