棧和隊列的區(qū)別如下:
1、隊列先進先出,棧先進后出;
2、隊列和棧同屬于Java合集框架,由Collcetion接口實現(xiàn),但隊列由Queue接口實現(xiàn),棧由List接口實現(xiàn);
(視頻教程推薦:java視頻)
3、棧是限定只能在表的一端進行插入和刪除操作的線性表;隊列是限定只能在表的一端進行插入并且在另一端進行刪除操作的線性表;
4、棧只能從頭部取數(shù)據(jù),也就是說最先放入的需要遍歷整個棧后才能取出來,而且在遍歷數(shù)據(jù)的時候還要為數(shù)據(jù)開辟臨時空間,保持數(shù)據(jù)在遍歷前后的一致性;隊列基于地址指針進行遍歷,而且可以從頭或尾部開始遍歷,無需開辟臨時空間,速度要快的多;
5、常見棧的應(yīng)用場景包括括號問題的求解、表達式的轉(zhuǎn)換和求值、函數(shù)調(diào)用和遞歸實現(xiàn)、深度優(yōu)先搜索遍歷等;常見的隊列的應(yīng)用場景包括計算機系統(tǒng)中各種資源的管理、消息緩沖器的管理、廣度優(yōu)先搜索遍歷等。
推薦教程:java入門程序