![算法零基础一本通(Python版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/51/44510051/b_44510051.jpg)
上QQ阅读APP看书,第一时间看更新
5-3 Python中栈的应用
Python的列表(list)结构可以让我们很方便地实现前两节的栈操作,在这一节笔者将讲解使用Python内建列表直接模拟栈操作,以及使用列表功能重新诠释栈操作,同时我们也可以增加一些功能操作,下列将一一讲解。
5-3-1 使用列表(list)模拟栈操作
在Python程序语言中关于列表(list)有两个很重要的内建方法:
append( ):在列表末端加入数据,读者可以想成是栈的push方法。
pop( ):读取列表末端的数据同时删除该数据,读者可以想成是栈的pop方法。
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P68_49958.jpg?sign=1739483203-7L73GQ87Bu9ipR3yXp2F4TFHALH9HWYL-0-6d8b08ce82ebf73c932031eddd7f7834)
程序实例ch5_1.py:使用Python的append( )模拟栈的push,使用Python的pop( )模拟栈的pop。
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P68_49956.jpg?sign=1739483203-6eENE4BR8Vt3TMgnFRXkovhvbkfC5Cze-0-3cf804f46e1bac1e3f7d8f88c7bf7db8)
执行结果
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P68_49957.jpg?sign=1739483203-W4JlysQ1LNx2GrJO7GXgpiVJuvAfOf81-0-1f032838fc591863e098029572fc37df)
5-3-2 自行建立stack类别执行相关操作
程序实例ch5_2.py:将Grape、Mango、Apple分别推入栈,然后输出有多少种水果在栈内。
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P68_49960.jpg?sign=1739483203-IpWICLpZG9LbBwLy5LbNiv19gs4CadXG-0-aeae7c1d5cb379c4df9d68feeeed694e)
执行结果
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P69_49961.jpg?sign=1739483203-zgRMezWUqjqKiZK6KiNzVNhjtScYpAAj-0-01e082da397addc40aecb645589e2cb3)
程序实例ch5_3.py:扩充设计ch5_2.py,将数据推入栈输出数量后,再将数据取出。在这个程序设计中,为了确认所有数据是否都已经取出,可以在Stack类别内增加isEmpty( )方法。
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P69_49962.jpg?sign=1739483203-aouhOthqbNJBLRCCXj20IHXgABqysucc-0-fa89a2009f53c1a05c13e0b217bb2346)
执行结果
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P69_49963.jpg?sign=1739483203-QVIARY0RR9Ey4Hl1NwoQEv96LkiRGe5B-0-e4ec41e0ed21015c608946e94e5c2da6)