入队列1、2、3,出队列1,入队列4,再全部出队列
入队列1、2、3,出队列1,入队列4,再全部出队列 这是什么?#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 20:51
能麻烦再出一个用两个栈实现上述队列的嘛{:5_92:} 言辞. 发表于 2022-3-29 21:49
能麻烦再出一个用两个栈实现上述队列的嘛
用两个栈实现上述队列?
什么意思?
人造人 发表于 2022-3-29 22:29
用两个栈实现上述队列?
什么意思?
就是利用两个栈的后进先出实现一个队列先进先出的效果{:10_254:} 言辞. 发表于 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-29 23:03
感谢感谢
页:
[1]