一个栈实现队列操作,听起来是天方夜谭啊。没错,因为栈和队列的特性是完全相反的嘛。不过,李宁告诉我们:一切皆有可能。
怎么弄呢?哈,找到了一个方法,使用递归函数。因为递归函数实际上是用内存中栈来存储某些局部变量的,所以,我们隐式的加入一个栈,这样,看起来就像是只有一个栈实现了一个队列一样。
class OneSToOneQ(stack):
def enqueue(self,data):
self.push(data)
def dequeue(self):
tmp=0
ret=0
tmp = self.stack.pop(-1)
if self.empty():
return tmp
else:
ret = self.dequeue()
self.push(tmp)
return ret
基本思想:将栈中数据逐个拿出存放到局部变量中,直到将最后一个数据拿出(即出队操作),然后再将局部变量逐个放入栈中。这样看来就是队列的出队操作了。
父类stack详见:http://blog.youkuaiyun.com/vhghhd/article/details/8518659