詳解python數(shù)據(jù)結構之棧stack
棧(Stack)是一種運算受限的線性表。
按照先進后出(FILO,F(xiàn)irst In Last Out)的原則存儲數(shù)據(jù),先進入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂。棧只能在一端進行插入和刪除操作。
文章內(nèi)容包含:
(1)棧的基本格式(2)壓棧 push_stack(3)出棧 pop_stack(4)取棧頂 peek_stack
一、棧的基本格式class Stack(): def __init__ (self,size):self.size = size #棧空間大小self.top = -1 #棧中進入一個數(shù)據(jù) top 加 1self.stack = [] def display_stack(self):#棧stack的打印print(self.stack)if __name__ == '__main__': stack = Stack(5) #設定棧空間 stack.display_stack() #打印棧數(shù)據(jù)二、進棧與壓棧 push_stack
class Stack(): def __init__ (self,size):self.size = sizeself.top = -1self.stack = [] #進棧數(shù)據(jù)列表 def display_stack(self):print(self.stack) def push_stack(self,data):if len(self.stack ) >= self.size: #當數(shù)據(jù)數(shù)量大于設置的空間,則棧溢出 print('stack over flow!') returnself.stack.append(data) #沒有棧溢出就將數(shù)據(jù)追加到列表中self.top += 1 #棧中每增加一個數(shù)據(jù)就加 1if __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,這里進棧數(shù)據(jù)時 6 個,即提示棧溢出stack over flow! stack.display_stack()
執(zhí)行結果:

class Stack(): def __init__ (self,size):self.size = sizeself.top = -1self.stack = [] #進棧數(shù)據(jù)列表 def display_stack(self):print(self.stack) def push_stack(self,data):if len(self.stack ) >= self.size: print('stack over flow!') returnself.stack.append(data)self.top += 1 def pop_stack(self):if self.top <= -1: #當top小于等于初始值 -1 時說明stack數(shù)據(jù)列表為空 print('stack is empty!') returnret = self.stack.pop() #stack數(shù)據(jù)列表不為空就取出最后進的值,列表數(shù)據(jù)數(shù)量就少一個self.top -= 1 return retif __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() #進棧數(shù)據(jù)有 5 個,出棧函數(shù)調(diào)用了 6 次,就出現(xiàn)了提示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()
執(zhí)行結果:

class Stack(): def __init__ (self,size):self.size = sizeself.top = -1self.stack = [] def display_stack(self):print(self.stack) def push_stack(self,data):if len(self.stack ) >= self.size: print('stack over flow!') returnself.stack.append(data) self.top += 1 def peek_stack(self):if self.top == -1: #當棧內(nèi)沒有數(shù)據(jù)時 提示 stack is empty! print('stack is empty!') returnpeek = self.stack[self.top] #棧不為空時,將棧頂?shù)臄?shù)據(jù)提取出來return peekif __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)
執(zhí)行結果:

到此這篇關于詳解python數(shù)據(jù)結構之棧stack的文章就介紹到這了,更多相關python 棧stack內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!
相關文章:
1. 什么是python的自省2. 解決Android studio xml界面無法預覽問題3. Spring Boot和Thymeleaf整合結合JPA實現(xiàn)分頁效果(實例代碼)4. 詳解Android studio 動態(tài)fragment的用法5. Springboot Druid 自定義加密數(shù)據(jù)庫密碼的幾種方案6. php模擬實現(xiàn)斗地主發(fā)牌7. Vuex localStorage的具體使用8. IntelliJ IDEA安裝插件的方法步驟9. Vue封裝一個TodoList的案例與瀏覽器本地緩存的應用實現(xiàn)10. 使用Android studio查看Kotlin的字節(jié)碼教程

網(wǎng)公網(wǎng)安備