言辞. 发表于 2022-3-29 20:21:56

入队列1、2、3,出队列1,入队列4,再全部出队列

入队列1、2、3,出队列1,入队列4,再全部出队列

人造人 发表于 2022-3-29 20:28:08

这是什么?

人造人 发表于 2022-3-29 20:51:58

#include <queue>
#include <cstddef>

using std::queue;

int main() {
    queue<size_t> q;
    q.push(1);
    q.push(2);
    q.push(3);
    q.pop();
    q.push(4);
    while(!q.empty()) q.pop();
    return 0;
}

言辞. 发表于 2022-3-29 21:49:31

人造人 发表于 2022-3-29 20:51


能麻烦再出一个用两个栈实现上述队列的嘛{:5_92:}

人造人 发表于 2022-3-29 22:29:14

言辞. 发表于 2022-3-29 21:49
能麻烦再出一个用两个栈实现上述队列的嘛

用两个栈实现上述队列?
什么意思?

言辞. 发表于 2022-3-29 22:32:56

人造人 发表于 2022-3-29 22:29
用两个栈实现上述队列?
什么意思?

就是利用两个栈的后进先出实现一个队列先进先出的效果{:10_254:}

人造人 发表于 2022-3-29 23:03:01

言辞. 发表于 2022-3-29 22:32
就是利用两个栈的后进先出实现一个队列先进先出的效果

#include <stack>
#include <cstddef>

//#define DEBUG

#ifdef DEBUG
#include <iostream>
using std::cout, std::endl;
#endif

using std::stack;

template<typename T>
class queue {
public:
    void push(const T &value) {
      this->lhs.push(value);
    }
    void pop() {
      this->move(this->lhs, this->rhs);
      this->rhs.pop();
      this->move(this->rhs, this->lhs);
    }
    const T top() {
      this->move(this->lhs, this->rhs);
      const T result = this->rhs.top();
      this->move(this->rhs, this->lhs);
      return result;
    }
    bool empty() {
      return this->lhs.empty();
    }
private:
    stack<T> lhs, rhs;

    // lhs to rhs
    static void move(stack<T> &lhs, stack<T> &rhs) {
      while(!lhs.empty()) {
            rhs.push(lhs.top());
            lhs.pop();
      }
    }
};

int main() {
#ifdef DEBUG
    {
      queue<size_t> q;
      q.push(1);
      q.push(2);
      q.push(3);

      cout << q.top() << endl;
      q.pop();

      q.push(4);
      while(!q.empty()) {
            cout << q.top() << endl;
            q.pop();
      }
      return 0;
    }
#endif
    queue<size_t> q;
    q.push(1);
    q.push(2);
    q.push(3);
    q.pop();
    q.push(4);
    while(!q.empty()) q.pop();
    return 0;
}

言辞. 发表于 2022-3-30 09:11:14

人造人 发表于 2022-3-29 23:03


感谢感谢
页: [1]
查看完整版本: 入队列1、2、3,出队列1,入队列4,再全部出队列