完整代码:
#include<stdio.h>
#include<malloc.h>
#define ERROR 0
#define OK 1
#define M 100
//循环队列结构体定义
typedef int ElemType;
typedef struct node {
ElemType *elem;
int front,rear;
int QueueSize;
} SeqQueue;
//创建算法
int InitQueue(SeqQueue *Q) {
Q->elem=(ElemType*)malloc(sizeof(ElemType)*M);
if(!(Q->elem)) {
return ERROR;
}
Q->QueueSize=M;
Q->front=Q->rear=0;
return OK;
}
//入队算法
int EnQueue(SeqQueue *Q,ElemType e) {
if(Q->front==(Q->rear+1)%Q->QueueSize) {
return ERROR;
}
Q->elem[Q->rear]=e;
Q->rear=(Q->rear+1)%Q->QueueSize;
return OK;
}
//出队算法
int DeQueue(SeqQueue *Q,ElemType *e) {
if(Q->front==Q->rear) {
return ERROR;
}
*e=Q->elem[Q->front];
Q->front=(Q->front+1)%Q->QueueSize;
return OK;
}
//判断队空
int QueueEmpty(SeqQueue *Q) {
if(Q->front==Q->rear) {
return OK;
} else {
return ERROR;
}
}
//判断队满
int IsFull(SeqQueue *Q) {
if(Q->front==(Q->rear+1)%Q->QueueSize) {
return OK;
} else {
return ERROR;
}
}
//求队列长度
int QueueLength(SeqQueue *Q) {
return (Q->rear-Q->front+Q->QueueSize)%Q->QueueSize;
}
//打印队列
void PrintfQueue(SeqQueue *Q) {
if(Q->front==Q->rear) {
printf("\nThis is null!");
}else{
for(int i=Q->front; i<Q->rear; i++) {
printf("%d",Q->elem[i]);
}
}
}
int main(void) {
SeqQueue Q;
ElemType e,e1;
scanf("%d",&e);
InitQueue(&Q);
EnQueue(&Q,e);
DeQueue(&Q,&e1);
printf("%d\n",e1);
PrintfQueue(&Q);
return 0;
}