#include<iostream>
using namespace std;
class Point{
int x;
Point *next;
public :
Point();
int getx();
bool setx(int x);
Point *getnext();
bool setnext(Point *next);
};
Point::Point(){
x = 0;
next = NULL;
}
int Point::getx(){
return x;
}
bool Point::setx(int x){
this->x = x;
}
Point *Point::getnext(){
return this->next;
}
bool Point::setnext(Point *next){
this->next = next;
}
class QueueList{
Point *front;
Point *rear;
int length;
public:
QueueList();
bool push(int x);
bool pop();
bool emp();
int size();
int find();
int fron();
};
QueueList::QueueList(){
Point *w = new Point();
length = 0;
front = rear = w;
}
bool QueueList::push(int x){
Point *p = new Point();
rear->setx(x);
rear->setnext(p);
rear = p;
length++;
return 1;
}
bool QueueList::pop(){
if(length == 0)
return 0;
Point *q = front;
front = q->getnext();
length--;
delete(q);
return 1;
}
bool QueueList::emp(){
if(length == 0)
return 1;
else
return 0;
}
int QueueList::size(){
return length;
}
int QueueList::find(){
Point *q = front;
for(int i=0; i<length-1; i++)
q = q->getnext();
return q->getx();
}
int QueueList::fron(){
return front->getx();
}
main(void){
QueueList q = QueueList();
q.push(1);
cout<<q.find()<<endl;
q.push(2);
cout<<q.find()<<endl;
q.push(3);
cout<<q.find()<<endl;
q.push(4);
cout<<q.find()<<endl;
q.pop();
cout<<q.fron()<<endl;
q.pop();
cout<<q.fron()<<endl;
}