#include using namespace std; struct Element { int value; Element* next = 0; }; struct Queue { Element* front = 0; Element* back = 0; int queue_size = 0; void push(int n) { Element* new_elem = new Element(); new_elem->value = n; if (queue_size > 0) { back->next = new_elem; } else { front = new_elem; } back = new_elem; queue_size++; } int pop() { int result = front->value; Element* old_front = front; if (queue_size > 1) { front = front->next; } else { front = 0; back = 0; } delete old_front; queue_size--; return result; } int top() { return front->value; } int size() { return queue_size; } void clear() { while (size() > 0) { pop(); } } }; int main() { Queue q; string s; cin >> s; while (s != "exit") { if (s == "push") { int n; cin >> n; q.push(n); cout << "ok\n"; } else if (s == "pop") { cout << q.pop() << "\n"; } else if (s == "front") { cout << q.top() << "\n"; } else if (s == "size") { cout << q.size() << "\n"; } else if (s == "clear") { q.clear(); cout << "ok\n"; } cin >> s; } cout << "bye\n"; return 0; }