棧也是一種數(shù)據(jù)呈線性排列的數(shù)據(jù)結(jié)構(gòu),不過在這種結(jié)構(gòu)中,我們只能訪問最新添加的數(shù)據(jù)。
-
棧的概念圖。現(xiàn)在存儲在棧中的只有數(shù)據(jù) Blue。
image.png -
然后,棧中添加了數(shù)據(jù) Green。
image.png -
接下來,數(shù)據(jù) Red入棧。
image.png -
出棧:從棧中取出數(shù)據(jù)時,是從最上面,也就是最新的數(shù)據(jù)開始取出的。這里取出的是 Red。
image.png -
出棧:如果再進行一次出棧操作,取出的就是Green了。
image.png
像棧這種最后添加的數(shù)據(jù)最先被取出,即“后進先出” 的結(jié)構(gòu),我們稱為 Last InFirst Out,簡稱 LIFO。
與鏈表和數(shù)組一樣,棧的數(shù)據(jù)也是線性排列,但在棧中,添加和刪除數(shù)據(jù)的操作只能在一端進行,訪問數(shù)據(jù)也只能訪問到頂端的數(shù)據(jù)。想要訪問中間的數(shù)據(jù)時,就必須通過出棧操作將目標數(shù)據(jù)移到棧頂才行。




