#include<stdio.h>
#define MAXQSIZE 10
typedef int QElemType;
typedef int Status;
//顺序队列 (循环队列,有一个空间不用)
typedef struct{QElemType *base;int rear;int front;
}SqQueue;
//初始化队列
Status InitQueue(SqQueue &Q){Q.base=new QElemType[MAXQSIZE];//或 Q.base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType)) if(!Q.base) return 0;Q.rear=Q.front=0;return 0;
}
//求队列的长度
int QueueLength(SqQueue Q) {return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
//入队
Status EnQueue(SqQueue &Q,QElemType &e){ if((Q.rear+1)%MAXQSIZE==Q.front ){//队满 return 0;}else{Q.base[Q.rear] =e;Q.rear=(Q.rear+1)%MAXQSIZE;return 1;}
}
//出队
Status DeQueue(SqQueue &Q,QElemType &e) {if(Q.front==Q.rear) return 0;e=Q.base[Q.front];Q.front=(Q.front+1)%MAXQSIZE; return 1;
}
//取队头元素
QElemType GetHead(SqQueue Q) {if(Q.front!=Q.rear){return Q.base[Q.front];}
}
main(){int n,e;SqQueue Q;//初始化 n=InitQueue(Q);if(n==1){printf("队列初始化成功\n"); }//入队for(int i=0;i<10;i++) {EnQueue(Q,i);}//出队 n=DeQueue(Q,e);if(n==1){printf("出队元素:%d\n",e);}//求队列长度n=QueueLength(Q) ;printf("队列长度为%d\n",n);//取对头元素 e=GetHead(Q) ;printf("队头元素:%d\n",e);
}