#include <iostream> using namespace std; class stack { private: int* data; int cur; int capacity; public: stack(int cap = 100) { data = new int[cap]; cur = -1; capacity = cap; } ~stack() { delete[] data; } void push(int val) { data[++cur] = val; } void pop() { --cur; } int top() { return data[cur]; } bool full() { return cur == capacity - 1; } bool empty() { return cur == -1; } }; class Myqueue { private: stack a, b; public: Myqueue() { } ~Myqueue() { } void push(int val) { while (!b.empty()) { a.push(b.top()); b.pop(); } if (!a.full()) { a.push(val); } } void pop() { while (!a.empty()) { b.push(a.top()); a.pop(); } if (!b.empty()) { b.pop(); } } int top() { while (!a.empty()) { b.push(a.top()); a.pop(); } if (!b.empty()) { return b.top(); } } }; int main(void) { Myqueue q; q.push(1); q.push(2); q.push(3); cout<<q.top()<<endl; q.pop(); cout<<q.top()<<endl; q.pop(); q.push(4); cout<<q.top()<<endl; q.pop(); return 0; }