#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
typedef struct node * qque;
struct node{
int ele;
node * next;
};
typedef struct queue * Que;
struct queue{
qque front;
qque tail;
};
Que Queinit()
{
Que que=(Que)malloc(sizeof(queue));
que->front=que->tail=0;
return que;
}
bool QueEmpty(Que que)
{
return que->front==0;
}
int QueFront(Que que)
{
if(que->front)
return que->front->ele;
else {
cout<<"wrong!!"<<endl;
return -1;
}
}
int QueLast(Que que)
{
if(que->tail)
return que->tail->ele;
else {
cout<<"wrong !!"<<endl;
return -1;
}
}
void PushQue(Que que,int x)
{
qque q=(qque)malloc(sizeof(node));
q->ele=x;
q->next=NULL;
if(que->front)
{
que->tail->next=q;
}
else
{
que->front=q;
}
que->tail=q;
}
void DeleteQue(Que que)
{
que->front=NULL;
que->tail=NULL;
}
void Pop(Que que)
{
if(que->front)
que->front=que->front->next;
else cout<<"wrong!!!"<<endl;
}