#include<stdio.h>
#include<stdlib.h>
typedef struct LinkNode{ //定义队列结点
int data;
struct LinkNode *next;
}LinkNode;
typedef struct{ //定义队列
LinkNode *front,*rear; //定义头结点和尾结点
}LinkQueue;
//初始化
void InitQueue(LinkQueue &Q){
Q.front=Q.rear=(LinkNode *)malloc(sizeof(LinkNode)); //建立头结点
Q.front->next=NULL;
}
//判队空
bool isEmpty(LinkQueue Q){
if(Q.front==Q.rear){
return true;
}else{
return false;
}
}
//入队
bool EnQueue(LinkQueue &Q,int x){
LinkNode *s=(LinkNode *)malloc(sizeof(LinkNode)); //创建新结点
s->data=x; s->next=NULL; //将结点插入到队尾
Q.rear->next=s;
Q.rear=s; //将尾指针指向最后一个结点
return true;
}
//出队
bool DeQueue(LinkQueue Q,int &x){
if(Q.front==Q.rear){
return false;
}
LinkNode *p=Q.front->next; //令p指向除头结点外的第一个结点
x=p->data;
Q.front->next=p->next;
if(Q.rear==p){ //若原队列中只有一个结点,删除后变空
Q.rear=Q.front;
}
free(p);
return true;
}
int main(){
}