Python杂文小品

用python实现ADT Stack栈的算法

2020-03-21  本文已影响0人  金融测试民工

    栈作为一种数据结构,是一种只能在一端进行插入和删除操作。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(即最后一个数据被第一个读出来)

抽象数据类型“栈”定义为如下操作:

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)。

上一篇下一篇

猜你喜欢

热点阅读