詳解python資料結構之棧stack

2022-09-25 19:21:12 字數 3512 閱讀 1113

棧(stack)是一種運算受限的線性表。

按照先進後出(filo,first in last out)的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂。棧只能在一端進行插入和刪除操作。

文章內容包含:

(1)棧的基本格式

(2)壓棧 push_stack

(3)出棧 pop_stack

(4)取棧頂 peek_stack

class stack():

def __init__ (self,size):

self.size = size #棧空間大小

self.top = -1 #棧中進入乙個資料 top 加 1

self.stack =

def display_stack(self):#棧stack的列印

print(self.stack)

if __name__ == "__main__":

stack = stack(5) #設定棧空間

stack.display_stack() #列印棧資料

class stack():

def __init__ (self,size):

self.size = size

self.top = -1

self.stack = #進棧資料列表

def display_stack(self):

print(self.stack)

zxuxmoymb def push_stack(self,data):

if len(self.stack ) >= self.size: #當資料數量大於設定的空間,則棧溢位

www.cppcns.comprint("stack over flow!")

return

self.stack.append(data) #沒有棧溢位就將資料追加到列表中

self.top += 1 #棧中每增加乙個資料就加 1

if __name__ == "__main__":

stack = stack(5)

stack.push_stack(0)

stack.push_stack(1)

stack.push_stack(2)

stack.push_stack(3)

stack.push_stack(4)

stack.push_stack(5) #stack空間是 5,這裡進棧資料時 6 個,即提示棧溢位stack over flow!

stack.display_stack()

執行結果:

class stack():

def __init__ (self,size):

self.size = size

self.top = -1

self.stack = #進棧資料列表

def display_stack(self):

print(self.stack)

def push_stack(self,data):

if len(self.stack ) >= self.size:

print("stack over flow!")

return

self.stack.append(data)

self.top += 1

def pop_stack(self):

if self.top <= -1: #當top小於等於初始值 -1 時說明stack資料列表為空

print("stack is empty!")

return

ret = self.stack.pop() #stack資料列表不為空就取出最後進的值,列表資料數量就少乙個

self.top -= 1

return ret

if __name__ == "__main__":

stack = stack(5)

stack.push_stack(0)

stack.push_stack(1)

stack.push_stack(2)

stack.push_stack(3)

stack.push_stack(4)

stack.display_stack()

#進棧資料有 5 個,出棧函式呼叫了 6 次,就出現了提示stack is empty!

ret = stack.pop_stack()

print(ret)

stack.display_stack()

ret = stack.pop_stack()

print(ret)

stack.display_stack()

ret = stack.pop_stack()

print(ret)

stack.display_stack()

ret = stack.pop_stack()

print(ret)

stack.display_stack()

ret = stack.pop_stack()

print(ret)

stack.display_stack()

程式設計客棧 ret = stack.pop_stack()

print(ret)

stack.display_stack()

執行結果:

class stack():

def __init__ (self,size):

self.size = size

self.top = -1

self.stack =

def display_stack(self):

print(self.stack)

def push_stack(self,data):

if len(self.stack ) >= self.size:

print("stack over flow!")

return

self.stack.append(data)

self.top += 1

def peek_stack(self):

if self.top == -1: #當棧內沒有資料時 提示 stack is empty!

print("stack is empty!")

return

peek = self.stack[self.top] #棧不為空時,將棧頂的資料提取出來

return peek

if __name__ == "__main__":

stack = stack(5)

stack.push_stack(0)

stack.push_stack(1)

stack.push_stack(2)

stack.push_stack(3)

stack.push_stack(4)

stack.push_stack(5)

stack.display_stack()

peek = stack.peek_stack()

print(peek)

執行結果:

Python資料結構之棧

容器 作為容器資料結構,它們保證存入的元素被儲存在容器裡,尚未明確刪除的元素總是可以訪問,而取出並刪除的元素就不再存在於容器中了 棧 棧主要用於在計算過程中儲存臨時的資料,這些資料是計算中發現或者產生的,在後面的計算中可能需要使用它們 棧是最簡單的快取結構,它支援資料項的儲存和訪問,不支援資料項之間...

Python資料結構之 棧

什麼是棧?棧是一種先進先出的儲存器,只可以通過乙個入口訪問其中的資料項。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素...

python資料結構之棧

1.棧的特點 先出,實際上就是對順序表和煉表的進一步封裝。棧可以用順序表表示,也可以用鍊錶表示。用鍊錶構造棧 方法一 在鍊錶頭部新增元素,並在頭部取出元素,相應的時間複雜度為o 1 方法二 在鍊錶尾部新增元素,並在尾部取出元素,因為要遍歷整個鍊錶,相應的時間複雜度為o n 因此,選用方法一。3.關於...