当前位置:   article > 正文

详解两个栈实现一个队列(python实现——经典面试题)_python用两个队列实现一个栈的功能

python用两个队列实现一个栈的功能

1、题目说明

      使用两个栈结构,实现一个队列功能,实现队列的添加元素和弹出元素。

      注意:

      队列特点是只能在队列尾部添加元素,在队列头部删除元素,先进先出(FIFO/LILO)

2、结题思路

       两个栈可以巧妙的结合,第一个栈用来添加元素,而在第二个栈中弹出元素。

       我们把所有添加元素的操作放在第一个栈中实现,当需要弹出元素时全部放在第二个栈中实现,当然,还会涉及有时候把第一个栈中的元素转移到第二个栈中已满足队列的逻辑。

3、代码实现

  1. class QueueWithTwoStacks(object):
  2. def __init__(self):
  3. self._stack1 = []
  4. self._stack2 = []
  5. def appendTail(self,x):
  6. self._stack1.append(x)
  7. def deleteHead(self):
  8. if self._stack2:
  9. return self._stack2.pop()
  10. else:
  11. if self._stack1:
  12. while self._stack1:
  13. self._stack2.append(self._stack1.pop())
  14. return self._stack2.pop()
  15. else:
  16. return None
  17. def getQueue(self):
  18. return self._stack1
  19. q = QueueWithTwoStacks()
  20. q.appendTail(1)
  21. q.appendTail(2)
  22. q.appendTail(3)
  23. print(q.getQueue())
  24. #q.deleteHead()
  25. print(q.deleteHead())
  26. print(q.deleteHead())
  27. print(q.deleteHead())

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/614287
推荐阅读
相关标签
  

闽ICP备14008679号