logologo

如何用栈结构实现队列结构

Aug 16, 2023

本题有坑!注意理解题,题目没有要求,可以使用两个栈来实现队列

C++

struct TwoStacksQueue {
 public:
  stack<int> push, pop;
  /**
   * Push栈向Pop倒数据
   * 【注】pop栈不为空 不能操作
   */
  void pushToPop() {
    if (pop.empty()) {
      while (!push.empty()) {
        pop.push(push.top());
        push.pop();
      }
    }
  }

  void add(int newValue) {
    push.push(newValue);
    pushToPop();
  }

  int poll() {
    if (push.empty() && pop.empty()) {
      cout << "Queue is empty!";
      return -1;
    }
    pushToPop();
    int value = pop.top();
    pop.pop();
    return value;
  }

  int peek() {
    if (push.empty() && pop.empty()) {
      cout << "Queue is empty!";
      return -1;
    }
    pushToPop();
    return pop.top();
  }
};

C++Java
浙ICP备2021022773号    2022-PRESENT © ZhengKe