这篇文章将为大家详细讲解有关Python怎么实现栈,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
前言
使用Python实现栈。
两种实现方式:
- <李>
基于数组——数组同时基于链表实现
李> <李>基于单链表——单链表的节点时一个实例化的节点对象
李> <强>完整代码可见GitHub: https://github.com/GYT0313/Python-DataStructure/tree/master/5-stack 强>
<强>目录结构:强>
“““
文件:abstractcollection.py
作者:Ken 兰伯特
“““
class AbstractCollection(对象):
“““才能An abstract collection 实现!”““
#,才能构造函数
def 才能;__init__(自我,,sourceCollection =,无):
,,,“““Sets 从而initial state of 自我,which includes
,,,contents of sourceCollection,, if 这# 39;s 现在!”““
,,,self._size =0
,,,if sourceCollection:
,,,,,for item 拷贝sourceCollection:
,,,,,,,self.add(项)
#,才能Accessor 方法
def 才能isEmpty(自我):
,,,“““Returns True if len(自我),==,0,,趁机False 否则!”““
,,,return len(自我),==0
,,
def 才能__len__(自我):
,,,“““Returns 从而number of items 自我!”拷贝““
,,,return self._size
def 才能__str__(自我):
,,,“““Returns 从而string representation of 自我!”““
,,,return “(“时间+大敌;,,,,,. join (map (str,,自我)),+,“]”;
def 才能__add__(自我,其他):
,,,“““Returns a new bag containing 从而内容
,,,of self 以及其他!”““
,,,result =,类型(自我)(自我)
,,,for item 拷贝:
,,,,,result.add(项)
,,,return 结果
def 才能__eq__(自我,其他):
,,,“““Returns True if self equals 其他,
,,,趁机False 否则!”““
,,,if self is 其他:return 真正的
,,,if 类型(自我),!=,类型(其他),或是\
,,,,,len(自我),!=,len(其他):
,,,,,return 错误的
,,,otherIter =, iter(其他)
,,,for item 自我:拷贝
,,,,,if item !=,下一个(otherIter):
,,,,,,,return 错误的
,,,return 真正的
abstractstack。py
“““ 文件:abstractstack.py 作者:Ken 兰伯特 “““ 得到abstractcollection import  AbstractCollection class AbstractStack (AbstractCollection): “““才能An abstract stack 实现!”““ #,才能构造函数 def 才能;__init__(自我,,sourceCollection =,无): ,,,“““Sets 从而initial state of 自我,which includes ,,,contents of sourceCollection,, if 这# 39;s 现在!”““ ,,,AbstractCollection.__init__(自我,,sourceCollection) #,才能Mutator 方法 def 才能添加(自我,,项): ,,,“““Adds item 用自我!”““ ,,,self.push(项)
2。基于数组
<>强运行示例:强>
“““
文件:abstractstack.py
作者:Ken 兰伯特
“““
得到abstractcollection import  AbstractCollection
class AbstractStack (AbstractCollection):
“““才能An abstract stack 实现!”““
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null