在不使用任何模块的情况下,在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)