python中棧的原理及實(shí)現(xiàn)方法示例
本文實(shí)例講述了python中棧的原理及實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:
棧(stack),有些地方稱為堆棧,是一種容器,可存入數(shù)據(jù)元素、訪問元素、刪除元素,它的特點(diǎn)在于只能允許在容器的一端(稱為棧頂端指標(biāo),英語:top)進(jìn)行加入數(shù)據(jù)(英語:push)和輸出數(shù)據(jù)(英語:pop)的運(yùn)算。沒有了位置概念,保證任何時候可以訪問、刪除的元素都是此前最后存入的那個元素,確定了一種默認(rèn)的訪問順序。
由于棧數(shù)據(jù)結(jié)構(gòu)只允許在一端進(jìn)行操作,因而按照后進(jìn)先出(LIFO, Last In First Out)的原理運(yùn)作。
棧結(jié)構(gòu)實(shí)現(xiàn)
棧可以用順序表實(shí)現(xiàn),也可以用鏈表實(shí)現(xiàn)。
棧的操作
- Stack() 創(chuàng)建一個新的空棧
- push(item) 添加一個新的元素item到棧頂
- pop() 彈出棧頂元素
- peek() 返回棧頂元素
- is_empty() 判斷棧是否為空
- size() 返回棧的元素個數(shù)
示例:
class Stack(object): """棧""" def __init__(self): self.items = [] def is_empty(self): """判斷是否為空""" return self.items == [] def push(self, item): """加入元素""" self.items.append(item) def pop(self): """彈出元素""" return self.items.pop() def peek(self): """返回棧頂元素""" return self.items[len(self.items)-1] def size(self): """返回棧的大小""" return len(self.items) if __name__ == "__main__": stack = Stack() stack.push("hello") stack.push("world") stack.push("itcast") print stack.size() print stack.peek() print stack.pop() print stack.pop() print stack.pop()
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計有所幫助。
- Python算法之棧(stack)的實(shí)現(xiàn)
- python實(shí)現(xiàn)堆棧與隊列的方法
- 棧和隊列數(shù)據(jù)結(jié)構(gòu)的基本概念及其相關(guān)的Python實(shí)現(xiàn)
- Python實(shí)現(xiàn)的棧(Stack)
- Python算法應(yīng)用實(shí)戰(zhàn)之棧詳解
- Python實(shí)現(xiàn)基本數(shù)據(jù)結(jié)構(gòu)中棧的操作示例
- Python編程實(shí)現(xiàn)雙鏈表,棧,隊列及二叉樹的方法示例
- Python 數(shù)據(jù)結(jié)構(gòu)之堆棧實(shí)例代碼
- Python數(shù)據(jù)結(jié)構(gòu)之棧、隊列的實(shí)現(xiàn)代碼分享
- python 利用棧和隊列模擬遞歸的過程
- Python基于列表模擬堆棧和隊列功能示例
相關(guān)文章
Python如何按單元格讀取復(fù)雜電子表格(Excel)的數(shù)據(jù)
這篇文章主要介紹了Python如何按單元格讀取復(fù)雜電子表格(Excel)的數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06Python基本運(yùn)算幾何運(yùn)算處理數(shù)字圖像示例
這篇文章主要介紹了Python基本運(yùn)算,同個幾個幾何運(yùn)算處理數(shù)字圖像示例來為大家詳細(xì)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09Python3刪除排序數(shù)組中重復(fù)項的方法分析
這篇文章主要介紹了Python3刪除排序數(shù)組中重復(fù)項的方法,結(jié)合實(shí)例形式分析了Python3刪除排序數(shù)組重復(fù)項的原理、相關(guān)遍歷及刪除操作技巧,需要的朋友可以參考下2019-01-01終端能到import模塊 解決jupyter notebook無法導(dǎo)入的問題
這篇文章主要介紹了在終端能到import模塊 而在jupyter notebook無法導(dǎo)入的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03TensorFlow2.X結(jié)合OpenCV 實(shí)現(xiàn)手勢識別功能
這篇文章主要介紹了TensorFlow2.X結(jié)合OpenCV 實(shí)現(xiàn)手勢識別功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04Python爬蟲實(shí)現(xiàn)網(wǎng)頁信息抓取功能示例【URL與正則模塊】
這篇文章主要介紹了Python爬蟲實(shí)現(xiàn)網(wǎng)頁信息抓取功能,涉及Python使用URL與正則模塊針對網(wǎng)頁信息的讀取與匹配相關(guān)操作技巧,需要的朋友可以參考下2017-05-05PyCharm無法識別PyQt5的2種解決方法,ModuleNotFoundError: No module named
這篇文章主要介紹了PyCharm無法識別PyQt5的兩種解決辦法,ModuleNotFoundError: No module named 'pyqt5',需要的朋友可以參考下2020-02-02