#include#define MaxSize 10 typedef struct { int data[MaxSize]; int front,rear; }SqQueue; void InitQueue(SqQueue &Q); bool QueueEmpty(SqQueue Q); bool EnQueue(SqQueue &Q,int x); int DeQueue(SqQueue &Q,int &x); int GetHead(SqQueue Q,int &x); //初始化队列 void InitQueue(SqQueue &Q) { //初始化时队头,队尾指针指0 Q.rear=Q.front=0; } bool QueueEmpty(SqQueue Q) { if(Q.rear==Q.front) return true; else { return false; } } //入队 bool EnQueue(SqQueue &Q,int x) { if((Q.rear+1)%MaxSize==Q.front) //队满则报错 { return false; } Q.data[Q.rear]=x; Q.rear=(Q.rear+1)%MaxSize; return true; } //出队(删除一个队头元素,并用x返回) int DeQueue(SqQueue &Q,int &x) { if(Q.rear==Q.front) { return 9999; //判断队空,若队空则返回9999 } x=Q.data[Q.front]; Q.front=(Q.front+1)%MaxSize; return x; } //获得队头元素的值,用x返回 int GetHead(SqQueue Q,int &x) { if(Q.rear==Q.front) { return 9999; //判断队空,若队空则返回9999 } x=Q.data[Q.front]; return x; } int main(void) { SqQueue Q; int x=0; InitQueue(Q); QueueEmpty(Q); EnQueue(Q,3); EnQueue(Q,4); EnQueue(Q,5); printf("%dn",DeQueue(Q,x)); printf("%dn",DeQueue(Q,x)); printf("%dn",DeQueue(Q,x)); GetHead(Q,x); return 0; }



