如何解决在不使用任何模块的情况下,在python中实现堆栈和队列的最佳方法是什么?
我已经尝试过collections.deque
和queue.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 举报,一经查实,本站将立刻删除。