/**
* 队列--链式存储
**/
#include <stdlib.h>
#include <iostream.h>
#define OK 1
#define ERROR 0
typedef struct node { //链式队列的结点结构
int item; //队列的数据元素类型
struct node *next; //指向后继结点的指针
}NODE;
typedef struct queue{ //链式队列
NODE *front; //队头指针
NODE *rear; //队尾指针
}QUEUE;
//初始化队列Q
void InitQueue(QUEUE *Q)
{
Q->front=(NODE*)malloc(sizeof(NODE));
if (Q->front==NULL) exit(0);
Q->rear=Q->front;
}
//入队
void EnQueue(QUEUE *Q,int item)
{
NODE *s=(NODE*)malloc(sizeof(NODE));
if (!s) exit(0);
s->item=item;
s->next=NULL;
Q->rear->next=s;
Q->rear=s;
}
//判断队列Q是否为空
int QueueEmpty(QUEUE Q)
{
if (Q.front==Q.rear) return 1;
else return 0;
}
//获取队头元素内容
void GetFront(QUEUE Q,int *item)
{
if (QueueEmpty(Q)) exit(0);
else *item=Q.front->next->item;
}
//出队
void DeQueue(QUEUE *Q,int *item)
{
if (QueueEmpty(*Q)) exit(0);
else
{
*item=Q->front->next->item;
NODE *s=Q->front->next;
Q->front->next=s->next;
free(s);
}
}