棧(stack)是一種運(yùn)算受限的線性表。棧內(nèi)的元素只允許通過(guò)列表的一端訪問(wèn),這一端被稱為棧頂,相對(duì)地,把另一端稱為棧底。裝羽毛球的盒子是現(xiàn)實(shí)中常見(jiàn)的棧例子。棧被稱為一種后入先出(LIFO,last-in-first-out)的數(shù)據(jù)結(jié)構(gòu)。向一個(gè)棧插入新元素又稱作進(jìn)棧、入?;驂簵?,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個(gè)棧刪除元素又稱作出?;蛲藯?,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。
下圖演示了入棧和出棧的過(guò)程:
我們知道pop()方法雖然可以訪問(wèn)棧頂元素,但是調(diào)用該方法后,棧頂元素被刪除,而peek()方法返回棧頂元素,并不改變棧。push(),pop(),peek()是實(shí)現(xiàn)棧的三個(gè)主要方法,下表定義了棧的主要方法:
dataStorage | Array | 存儲(chǔ)數(shù)據(jù)的底層數(shù)據(jù)結(jié)構(gòu) |
top | int | 記錄棧頂元素位置 |
延伸閱讀
我想了解如何學(xué)習(xí) |