完整代码:
#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
#define M 10
//链队列结构体定义
typedef int ElemType;
typedef struct node{
ElemType data;
struct node *next;
}QueueNode;
typedef struct{
QueueNode *front;
QueueNode *rear;
}LinkQueue;
//创建链队列
int InitQueue(LinkQueue *Q){
Q->front=(QueueNode*)malloc(sizeof(QueueNode)*M);
Q->front->next=NULL;
Q->rear=Q->front;
return OK;
}
//入队
int EnQueue(LinkQueue *Q,ElemType e){
QueueNode *p;
p=(QueueNode*)malloc(sizeof(QueueNode)*M);
p->data=e;
p->next=NULL;
Q->rear->next=p;
Q->rear=p;
return OK;
}
//出队
int DeQueue(LinkQueue *Q,ElemType *e){
QueueNode *p;
if(Q->front==Q->rear){
return ERROR;
}
p=Q->front->next;
*e=p->data;
Q->front->next=p->next;
if(Q->rear==p){
Q->rear=Q->front;
}
free(p);
return OK;
}
//取队头
int GetHead(LinkQueue *Q,ElemType *e){
QueueNode *p;
if(Q->front==Q->rear){
return ERROR;
}
p=Q->front->next;
*e=p->data;
return OK;
}
//判空
int QueueEmpty(LinkQueue *Q){
if(Q->front==Q->rear){
return OK;
}else{
return ERROR;
}
}
//打印
void PrintfQueue(LinkQueue *Q) {
QueueNode *p;
if(Q->front==Q->rear) {
printf("\nThis is null!");
}
p=Q->front->next;
while(p!=NULL){
printf("\n%d,",p->data);
p=p->next;
}
}
int main(void){
LinkQueue Q;
ElemType e1,e2;
scanf("%d",&e1);
InitQueue(&Q);
EnQueue(&Q,e1);
DeQueue(&Q,&e2);
printf("%d",e2);
PrintfQueue(&Q);
return 0;
}