演算法之什麼是棧

2021-09-29 13:22:08 字數 1299 閱讀 5269

棧(有時稱為「後進先出棧」)是乙個項的有序集合,其中新增移除新項總發生在同一端。這一端通常稱為「頂部」。與頂部對應的端稱為「底部」。

棧的底部很重要,因為在棧中靠近底部的項是儲存時間最長的。最近新增的項是最先會被移除的。這種排序原則有時被稱為 lifo (last in first out),後進先出。它基於在集合內的時間長度做排序。較新的項靠近頂部,較舊的項靠近底部。

棧的例子很常見。幾乎所有的自助餐廳都有一堆托盤或盤子,你從頂部拿乙個,就會有乙個新的托盤給下乙個客人。

或者又比如挑用乙個函式時,裡面又巢狀有函式。這時執行裡面的函式會先被執行後return,也就是所謂的後進先出

棧可以用順序表實現,也可以用鍊錶實現。

下面用乙個列表實現棧:

class stack(object):

"""棧"""

def __init__(self):

self.items =

def is_empty(self):

"""判斷是否為空"""

return self.items ==

def push(self, item):

"""加入元素"""

def pop(self):

"""彈出元素"""

return self.items.pop()

def peek(self):

"""返回棧頂元素"""

return self.items[len(self.items)-1]

def size(self):

"""返回棧的大小"""

return len(self.items)

if __name__ == "__main__":

stack = stack()

stack.push("hello")

stack.push("world")

stack.push("itcast")

print(stack.size())

print(stack.peek())

print(stack.pop())

print(stack.pop())

print(stack.pop())

你可以想到使用計算機的時候所碰到的例子。例如,每個 web 瀏覽器都有乙個返回按鈕。當你瀏覽網頁時,這些網頁被放置在乙個棧中(實際是網頁的**)。你現在檢視的網頁在頂部,你第乙個檢視的網頁在底部。如果按『返回』按鈕,將按相反的順序瀏覽剛才的頁面。

什麼是堆?什麼是棧?

一 英文名稱 堆和棧是c c 程式設計中經常遇到的兩個基本概念。先看一下它們的英文表示 堆 heap 棧 stack 二 從資料結構和系統兩個層次理解 在具體的c c 程式設計框架中,這兩個概念並不是並行的。深入到彙編級進行研究就會發現,棧是機器系統提供的資料結構,而堆 是由c c 函式庫提供的。這...

什麼是堆?什麼是棧?

一 英文名稱 堆和棧是c c 程式設計中經常遇到的兩個基本概念。先看一下它們的英文表示 堆 heap 棧 stack 二 從資料結構和系統兩個層次理解 在具體的c c 程式設計框架中,這兩個概念並不是並行的。深入到彙編級進行研究就會發現,棧是機器系統提供的資料結構,而堆是由c c 函式庫提供的。這兩...

棧(stack) 什麼是棧?

1.棧是一種特殊的線性結構 棧滿足線性結構 棧特殊性 棧有特殊的儲存方式,訪問結構 先進先出,進和出在乙個端 2.棧的操作 入棧 向棧口放入資料元素 push 出棧 從棧口取出資料元素 pop 棧頂指標 top 用來指向最後乙個入棧元素 入棧操作 設棧的最大長度為size,棧滿不可入棧 上溢 top...