![算法零基础一本通(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=1739291297-rbmer02JEy42Nitue7DSjb5XXbW4MP3T-0-628feeb2b34dd7436e4940089c200124)
程序实例ch5_1.py:使用Python的append( )模拟栈的push,使用Python的pop( )模拟栈的pop。
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P68_49956.jpg?sign=1739291297-2TJjpNTO7lDqpjXIBIaewvt59hTgtMor-0-fdcf366c9ac41f8b95135e6a89066b6a)
执行结果
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P68_49957.jpg?sign=1739291297-TM8IJZKZVEoEI2Q5P9uXMc8EdoJqrrNV-0-15931eaba9b86019724a3d2da1b915ec)
5-3-2 自行建立stack类别执行相关操作
程序实例ch5_2.py:将Grape、Mango、Apple分别推入栈,然后输出有多少种水果在栈内。
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P68_49960.jpg?sign=1739291297-1fvpV7LASFbTA7hiI85v5s1A1jto2o9U-0-b67a6fc33688deaae61d54fc13f4423c)
执行结果
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P69_49961.jpg?sign=1739291297-wtsNYbzvNIyNwISU27QYL3ExYJ6uf4If-0-6ac4448b6976064e01b7f6a6a15494a8)
程序实例ch5_3.py:扩充设计ch5_2.py,将数据推入栈输出数量后,再将数据取出。在这个程序设计中,为了确认所有数据是否都已经取出,可以在Stack类别内增加isEmpty( )方法。
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P69_49962.jpg?sign=1739291297-LOd1lrYAePxSqcwOBnUgY999ZQNTnoXA-0-f68126568f7fc0e50f586b5783847294)
执行结果
![](https://epubservercos.yuewen.com/6BDBC6/23721658309542706/epubprivate/OEBPS/Images/Figure-P69_49963.jpg?sign=1739291297-rLMZG6q0p87OYfDS9jOA744chGSwtQ8v-0-8894c7528ab61876aa997edb81126d66)