顺序队列(环形队列)

/*s * 队列,采用环形队列方式 * * 2010年12月26日 */ #include<stdio.h> #include<stdlib.h> #define ElemType char #define MAXSIZE 50 struct Queue { ElemType data[MAXSIZE]; int front; int rear; }; typedef Queue *SqQueue; /////////////////////// void initQueue(SqQueue &qu); int QueueEmpty(SqQueue &qu); int enQueue(SqQueue &qu,ElemType e); int deQueue(SqQueue &qu,ElemType *e); void testQueue(); ///////////////////////// void main() { testQueue(); } /////////////////////////////// void testQueue() { Queue e; SqQueue p; p=&e; initQueue(p); enQueue(p,'z'); enQueue(p,'x'); char c,*ep; ep =&c; deQueue(p,ep); printf("出队列=%c/n",*ep); deQueue(p,ep); printf("出队列=%c/n",*ep); } //////////////////////////////// /* * 初始化是 */ void initQueue(SqQueue &qu) { qu->front=qu->rear=0; } /* * */ int QueueEmpty(SqQueue &qu) { return qu->front==qu->rear; // 队空 } int enQueue(SqQueue &qu,ElemType e) { if((qu->rear + 1)%MAXSIZE==qu->front) // 队满 return 0; qu->rear = (qu->rear+1)%MAXSIZE; // 循环增加 1 qu->data[qu->rear] = e; return 1; } int deQueue(SqQueue &qu,ElemType *e) { if(qu->front == qu->rear) // 队空 return 0; qu->front = (qu->front + 1)%MAXSIZE; *e = qu->data[qu->front]; return 1; }

你可能感兴趣的:(顺序队列(环形队列))