棧(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.關於...