链队
typedef strcut{
ElemType data;
strcut LinkNode *next;
}LinkNode;
typedef struct{
LinkNode *front,*rear;
}LinkQueue;
void InitQueue(LinkNode &q){
q.front=q.rear=(LinkNode *)malloc(sizeof(LinkNode));
q.front->next=NULL;
}
Void InitQueue(LinkNode &q){
q.front=NULL;
q.rear=NULL;
}
bool IsEmpty(LinkNode q){
if(q.front==q.rear)
return true
else
return false;
}
void EnQueue(LinkNode &q,ElemType x){
LinkNode *s=(LinkNode *)malloc(sizeof(LinkNode));
s->data=x;
s->next=NULL;
q.rear->next=s;
q.rear=s;
}
void EnQueue(LinkNode &q,ElemType x){
LinkNode *s=(LinkNode *)malloc(sizeof(LinkNode));
s->data=x;
s->next=NULL;
if(q.front==NULL){
q.front=s;
q.rear=s;
}
else
q.rear->next=s;
q.rear=s;
}
bool DeQueue(LinkNode &q,ElemType &x){
if(q.front==q.rear)
return false;
LinkNode *s=q.front->next;
x=s->data;
q.front->next=s->next;
if(q.rear==s)
q.rear=q.front;
free(s);
}
bool DeQueue(LinkNode &q,ElemType &x){
if(q.front==NULL)
return false;
LinkNode *s=q.front;
x=s->data;
q.front=s->next;
if(q.rear==s){
q.front=NULL;
q.rear=NULL;
}
free(s);
return true;
}