225. 用队列实现栈

image.png

  1. type MyStack struct {
  2. queue1, queue2 []int
  3. }
  4. /** Initialize your data structure here. */
  5. func Constructor() (s MyStack) {
  6. return
  7. }
  8. /** Push element x onto stack. */
  9. func (s *MyStack) Push(x int) {
  10. s.queue2 = append(s.queue2, x)
  11. for len(s.queue1) > 0 {
  12. s.queue2 = append(s.queue2, s.queue1[0])
  13. s.queue1 = s.queue1[1:]
  14. }
  15. s.queue1, s.queue2 = s.queue2, s.queue1
  16. }
  17. /** Removes the element on top of the stack and returns that element. */
  18. func (s *MyStack) Pop() int {
  19. v := s.queue1[0]
  20. s.queue1 = s.queue1[1:]
  21. return v
  22. }
  23. /** Get the top element. */
  24. func (s *MyStack) Top() int {
  25. return s.queue1[0]
  26. }
  27. /** Returns whether the stack is empty. */
  28. func (s *MyStack) Empty() bool {
  29. return len(s.queue1) == 0
  30. }