#include <iostream>
using namespace std;
typedef struct queuenode{
int data;
struct queuenode *next;
}QueueNode;
typedef struct{
QueueNode *front;
QueueNode *rear;
}LinkQueue;
void InitQueue(LinkQueue *Q)
{
Q = (LinkQueue *)malloc(sizeof(LinkQueue));
Q->front = Q->rear = (queuenode *)malloc(sizeof(queuenode));
Q->front->next = Q->rear->next = NULL;
}
int Empty(LinkQueue *Q)
{
return (Q->front->next == NULL && Q->rear->next == NULL);
}
void EnQueue(LinkQueue *Q, int x)
{
QueueNode *p;
p = (QueueNode *)malloc(sizeof(QueueNode));
p->data = x;
p->next = NULL;
Q->rear->next = p;
Q->rear = p;
}
int DeQueue(LinkQueue *Q)
{
QueueNode *p;
int x;
if (Empty(Q))
return 0;
p = Q->front->next;
Q->front->next = p->next;
if (p->next == NULL)
Q->rear = Q->front;
x = p->data;
free(p);
return x;
}
void main()
{
LinkQueue *lq = NULL;
InitQueue(lq);
EnQueue(lq, 5);
int num;
num = DeQueue(lq);
}
void InitQueue(LinkQueue **Q)
{
*Q = (LinkQueue *)malloc(sizeof(LinkQueue));
(*Q)->front = Q->rear = (queuenode *)malloc(sizeof(queuenode));
(*Q)->front->next = Q->rear->next = NULL;
}
LinkQueue *lq = NULL;
InitQueue(&lq);