微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在不使用任何模块的情况下,在python中实现堆栈和队列的最佳方法是什么?

如何解决在不使用任何模块的情况下,在python中实现堆栈和队列的最佳方法是什么?

我已经尝试过collections.dequequeue.Lifoqueue来实现堆栈和队列,尽管它们都能正常工作,但我想从头开始实现它。那么根据时间和空间复杂度,哪种方法最好?我尝试通过单链列表和python list function实现它。还有其他比这更好的方法吗?

解决方法

这是队列。我评论了每个操作的时间复杂度

class QueuesArray:
    def __init__(self):
        self._data=[]
    def __len__(self): # O(1)
        return len(data)
    def isempty(self): # O(1)
        return len(self._data)==0
    def enqueue(self,e): #O(1)
        self._data.append(e)
        return e
    def dequeue(self): # O(1)
        if self.isempty():
            return ValueError("")
        return self._data.pop(0) # O(1)
    def first(self): # O(1)
        if self.isempty():
            print ('Queue is empty')
        return self._data[0]

这里是堆栈:

class StacksArray:
    def __init__(self):
        self._data=[]
    def __len__(self): # O(1)
        return len(self._data)
    def isempty(self): # O(1)
        return len(self._data)==0
    def push(self,e): # O(1)
        self._data.append(e)
        return e
    def pop(self): # O(1)+O(1)
        if self.isempty(): # O(1)
            print('stack is empty')
            raise IndexError
        else:
            return self._data.pop() # O(1)
    def top(self): # O(1)+O(1)
        if self.isempty(): # O(1)
            print('stack is empty')
            raise IndexError
        return self._data[-1] # O(1)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。