用python实现ADT Stack栈的算法
栈作为一种数据结构,是一种只能在一端进行插入和删除操作。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(即最后一个数据被第一个读出来)
栈抽象数据类型“栈”定义为如下操作:
stack():创建一个空栈,不包含任何数据项
push(item):入栈
pop():从栈顶将数据项移除,并返回
peek():返回栈顶的数据项但不移除,栈不被修改
isEmpty():返回栈是否为空
size():返回栈中有多少个数据项
python是面向对象机制,可以用来实现用户自定义类型,将ADT Stack实现为python的一个class,栈的操作实现为class的方法。由于Stack是一个数据集,我们选用list来实现。
可以将list的任意一端(index=0或-1)设置为栈顶。但要用list的末端(index=-1)作为栈顶,对栈的操作可以通过list的append和pop来实现,很简单!
栈的实现class stack:
def __init__(self):
self.items=[] #栈初始化
def peek(self): #获取栈顶的元素
return self.items[len(items)-1]
def push(self,items): #添加到栈中
self.items.append(items)
def pop(self): #出栈
return self.items.pop()
def isEmpty(self):
return self.items == []
def size(self):
return len(self.items)
这种实现方法,入栈和出栈复杂度都是O(1)。