Python构造栈结构
生活随笔
收集整理的這篇文章主要介紹了
Python构造栈结构
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
棧:是一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu);本片文章,我們用python的面向?qū)ο髞?lái)構(gòu)造這樣的數(shù)據(jù)結(jié)構(gòu)。
棧中的每一個(gè)數(shù)據(jù)除了存儲(chǔ)當(dāng)前的數(shù)值外,還存儲(chǔ)著當(dāng)前數(shù)值下一個(gè)數(shù)據(jù)的類型(注意不是下一個(gè)數(shù)據(jù)的數(shù)值)。
''' 遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' class Node(object): # 棧中的每一個(gè)結(jié)點(diǎn)有兩個(gè)屬性,一個(gè)是當(dāng)前的數(shù)值,另一個(gè)是下一個(gè)節(jié)點(diǎn)的值。def __init__(self,value=None):self.value = valueself.next = 0class stack(object):def __init__(self):self.node = Node()self.lstack = [self.node, ]def push(self,elem): # 定義入棧的函數(shù)oldnode = self.lstack[0]item = Node(elem) # 把這個(gè)數(shù)值實(shí)例化為棧中的數(shù)據(jù)類型if oldnode.value == None: # 如果是第一個(gè)值,則當(dāng)前value為當(dāng)前值,next值為0; 這里的第一個(gè)值是要放入棧底的,因此它的next值W為0!item.value = elemitem.next = 0 else:item.value = elem # 如果不是第一個(gè)值,則當(dāng)前值為當(dāng)前值,next值為緊鄰的那個(gè)值的數(shù)據(jù)類型,item.next = oldnodeself.lstack.append(item) # 把新的數(shù)據(jù)節(jié)點(diǎn)加入到lstack列表self.lstack.pop(0) # 然后去除列表中的上一次的數(shù)據(jù)節(jié)點(diǎn),最后一個(gè)節(jié)點(diǎn)加入之后,lstack列表中存儲(chǔ)的就是最上面的那個(gè)節(jié)點(diǎn)類型。def popitem(self): # 定義出棧的函數(shù)upnode = self.lstack[0]print(upnode.value)self.lstack.append(upnode.next)self.lstack.pop(0)向棧中壓入三個(gè)數(shù)值:
總結(jié)
以上是生活随笔為你收集整理的Python构造栈结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python的oop概述
- 下一篇: python isinstance函数