国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

詳解python數(shù)據(jù)結(jié)構(gòu)之棧stack

瀏覽:76日期:2022-06-20 11:56:22
前言

棧(Stack)是一種運(yùn)算受限的線性表。

按照先進(jìn)后出(FILO,F(xiàn)irst In Last Out)的原則存儲(chǔ)數(shù)據(jù),先進(jìn)入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂。棧只能在一端進(jìn)行插入和刪除操作。

文章內(nèi)容包含:

(1)棧的基本格式(2)壓棧 push_stack(3)出棧 pop_stack(4)取棧頂 peek_stack

一、棧的基本格式

class Stack(): def __init__ (self,size):self.size = size #棧空間大小self.top = -1 #棧中進(jìn)入一個(gè)數(shù)據(jù) top 加 1self.stack = [] def display_stack(self):#棧stack的打印print(self.stack)if __name__ == '__main__': stack = Stack(5) #設(shè)定棧空間 stack.display_stack() #打印棧數(shù)據(jù)二、進(jìn)棧與壓棧 push_stack

class Stack(): def __init__ (self,size):self.size = sizeself.top = -1self.stack = [] #進(jìn)棧數(shù)據(jù)列表 def display_stack(self):print(self.stack) def push_stack(self,data):if len(self.stack ) >= self.size: #當(dāng)數(shù)據(jù)數(shù)量大于設(shè)置的空間,則棧溢出 print('stack over flow!') returnself.stack.append(data) #沒有棧溢出就將數(shù)據(jù)追加到列表中self.top += 1 #棧中每增加一個(gè)數(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,這里進(jìn)棧數(shù)據(jù)時(shí) 6 個(gè),即提示棧溢出stack over flow! stack.display_stack()

執(zhí)行結(jié)果:

詳解python數(shù)據(jù)結(jié)構(gòu)之棧stack

三、出棧 pop_stack

class Stack(): def __init__ (self,size):self.size = sizeself.top = -1self.stack = [] #進(jìn)棧數(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: #當(dāng)top小于等于初始值 -1 時(shí)說明stack數(shù)據(jù)列表為空 print('stack is empty!') returnret = self.stack.pop() #stack數(shù)據(jù)列表不為空就取出最后進(jìn)的值,列表數(shù)據(jù)數(shù)量就少一個(gè)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() #進(jìn)棧數(shù)據(jù)有 5 個(gè),出棧函數(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í)行結(jié)果:

詳解python數(shù)據(jù)結(jié)構(gòu)之棧stack

四、取棧頂 peek_stack

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: #當(dāng)棧內(nèi)沒有數(shù)據(jù)時(shí) 提示 stack is empty! print('stack is empty!') returnpeek = self.stack[self.top] #棧不為空時(shí),將棧頂?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í)行結(jié)果:

詳解python數(shù)據(jù)結(jié)構(gòu)之棧stack

到此這篇關(guān)于詳解python數(shù)據(jù)結(jié)構(gòu)之棧stack的文章就介紹到這了,更多相關(guān)python 棧stack內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 东港市| 大庆市| 长汀县| 体育| 潼南县| 正宁县| 咸宁市| 遂溪县| 西华县| 揭东县| 全州县| 景谷| 屏南县| 保山市| 梅河口市| 巴林左旗| 遂昌县| 洪江市| 昌黎县| 林口县| 二连浩特市| 宜州市| 盐池县| 崇明县| 舞阳县| 乌拉特中旗| 长武县| 兴仁县| 辉南县| 平顺县| 红安县| 金堂县| 塘沽区| 禄丰县| 海兴县| 建瓯市| 封丘县| 兰坪| 娱乐| 平凉市| 江阴市|