#include<iostream>
using namespace std;
class Queue;
class QNode{
int _data;
QNode* _next;
QNode(int data, QNode* next){
_data = data;
_next = next;
}
friend class Queue;
};
class Queue{
QNode* _head;
QNode* _tail;
public:
Queue();
virtual ~Queue();
void add(int data);
int remove();
bool isEmpty();
};
Queue::Queue(){
_head = 0;
_tail = 0;
}
Queue::~Queue(){
while(!isEmpty())
remove();
}
void Queue::add(int data){
QNode* temp = new QNode(data, 0);
if(isEmpty()){
_head = temp;
_tail = temp;
}else{
_tail->_next = temp;
_tail = temp;
}
}
int Queue::remove(){
QNode* temp = _head->_next;
int ret = _head->_data;
delete _head;
_head = temp;
return ret;
}
bool Queue::isEmpty(){
return(!_head);
}
int main(){
Queue Q;
for(int i=0; i<100; i+=10){
Q.add(i);
}
while(!Q.isEmpty()){
cout<<Q.remove()<<" ";
}
}