Python 如何仅使用 FIFO 队列构建 LIFO 堆栈
我在这里有一个非常棘手的问题: 如何仅使用 FIFO 队列构建 LIFO 堆栈?
所以我已经有了大部分代码,但正如你在下面看到的,我不知道如何编码 pop功能
import queue
class MyLifo:
def __init__(self):
self.fifo = queue.Queue();
self.fifoAux = queue.Queue();
def isEmpty(self):
return self.fifo.empty()
def push(self, x):
self.fifo.put(x)
def pop(self):
### your code here.
### for testing the solution:
lifo = MyLifo()
i=0
while (i<30):
lifo.push(i)
i+=1
while (lifo.isEmpty() == False):
print(lifo.pop())
lifo.push(3)
lifo.push(5)
print(lifo.pop())
lifo.push(30)
print(lifo.pop())
print(lifo.pop())
print(lifo.pop())
有朋友可以帮忙吗?
I have a very tough question here:
how to build a LIFO stack using only FIFO queues ?
So I already have most of the code,but as you can see below ,I don't know how to code the
pop function
import queue
class MyLifo:
def __init__(self):
self.fifo = queue.Queue();
self.fifoAux = queue.Queue();
def isEmpty(self):
return self.fifo.empty()
def push(self, x):
self.fifo.put(x)
def pop(self):
### your code here.
### for testing the solution:
lifo = MyLifo()
i=0
while (i<30):
lifo.push(i)
i+=1
while (lifo.isEmpty() == False):
print(lifo.pop())
lifo.push(3)
lifo.push(5)
print(lifo.pop())
lifo.push(30)
print(lifo.pop())
print(lifo.pop())
print(lifo.pop())
Any friend can help?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
所以更好的解决方案是使用
queue.LifoQueue()
。但是,由于这是一种实践,因此以下解决方案具有时间复杂度O(1)
的push
函数和时间复杂度pop
函数O(N) 这意味着它会处理队列中的N
个现有元素。输出:
So the better solution is to use
queue.LifoQueue()
. However, since this is a practice, the following solution havepush
function with time complexityO(1)
andpop
function time complexityO(N)
that means it itreates throughN
existing elements in the queue.Output: