Python 棧
python 棧
在英語(yǔ)詞典中,單詞堆意味著將對(duì)象放在另一個(gè)上。在這個(gè)數(shù)據(jù)結(jié)構(gòu)中分配內(nèi)存的方式是一樣的。它以類似的方式存儲(chǔ)數(shù)據(jù)元素,因?yàn)橐欢驯P子在廚房中一個(gè)在另一個(gè)之上存儲(chǔ)。所以棧數(shù)據(jù)strcuture允許一端的操作可以稱為棧頂。我們可以添加元素或僅從堆棧中移除元素。
在堆棧中,順序排列的最后一個(gè)元素將首先出現(xiàn),因?yàn)槲覀冎荒軓亩褩m敳恳瞥?。這種功能稱為后進(jìn)先出(lifo)功能。添加和刪??除元素的操作稱為 push 和 pop 。在下面的程序中,我們將它實(shí)現(xiàn)為add和remove函數(shù)。我們聲明一個(gè)空列表并使用append()和pop()方法添加和刪除數(shù)據(jù)元素。
推入堆棧
class stack: def __init__(self): self.stack = [] def add(self, dataval): # use list append method to add element if dataval not in self.stack: self.stack.append(dataval) return true else: return false # use peek to look at the top of the stack def peek(self): return self.stack[0] astack = stack() astack.add("mon") astack.add("tue") astack.peek() print(astack.peek()) astack.add("wed") astack.add("thu") print(astack.peek())
當(dāng)上面的代碼被執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果:
mon mon
來自stack的pop
正如我們所知道的,我們只能從堆棧中移除太多的數(shù)據(jù)元素,我們實(shí)現(xiàn)了一個(gè)可以實(shí)現(xiàn)這一點(diǎn)的python程序。以下程序中的remove函數(shù)返回最上面的元素。我們首先通過計(jì)算堆棧的大小來檢查頂層元素,然后使用內(nèi)置的pop()方法找出最頂層的元素。
class stack: def __init__(self): self.stack = [] def add(self, dataval): # use list append method to add element if dataval not in self.stack: self.stack.append(dataval) return true else: return false # use list pop method to remove element def remove(self): if len(self.stack) <= 0: return ("no element in the stack") else: return self.stack.pop() astack = stack() astack.add("mon") astack.add("tue") print(astack.remove()) astack.add("wed") astack.add("thu") print(astack.remove())
當(dāng)上面的代碼被執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果:
tue thu