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