#include<stdio.h>
#include<stdlib.h>
#define MaxSize 10
typedef struct{
int *base;
int front;
int rear;
}SqQueue;
int InitSqQueue(SqQueue *Q){
Q->base=(int*)malloc(MaxSize*sizeof(int));
Q->front=0;
Q->rear=0;
return 1;
}
int DestorySqQueue(SqQueue *Q){
if(Q->base)
free(Q->base);
Q->front=0;
Q->rear=0;
return 1;
}
int ClearSqQueue(SqQueue *Q){
Q->front=0;
Q->rear=0;
return 1;
}
int EnQueue(SqQueue *Q,int e){
if((Q->rear+1)%MaxSize==Q->front) {
printf("Q is FULL\n");
return 0;
}
Q->base[Q->rear]=e;
Q->rear=(Q->rear+1)%MaxSize;
return 1;
}
int Dequeue(SqQueue *Q,int &e){
if(Q->front==Q->rear) return 0;
e=Q->base[Q->front];
Q->front=(Q->front+1)%MaxSize;
return 1;
}
void QueueEmpty(SqQueue *Q){
if(Q->front==Q->rear){
printf("Q is Empty\n");
}
else{
printf("Q isn't Empty\n");
}
}
int GetHead(SqQueue *Q){
if(Q->front==Q->rear){
printf("Q is Empty\n");
return 0;
}
return Q->base[Q->front];
}
int QueueLength(SqQueue *Q){
return (Q->rear-Q->front+MaxSize)%MaxSize;
}
int main() { //测试代码,可随意更改
SqQueue Q;
InitSqQueue(&Q);
int n,i,e;
scanf("%d",&n);
for(i=1;i<=n;i++){
EnQueue(&Q, i);
}
e=QueueLength(&Q);
printf("%d\n",e);
for(i=1;i<=n;i++){
Dequeue(&Q, e);
printf("%d ",e);
}
printf("\n");
e=QueueLength(&Q);
printf("%d\n",e);
DestorySqQueue(&Q);
return 0;
}
循环队列基本操作
猜你喜欢
转载自blog.csdn.net/m0_46200758/article/details/108271333
今日推荐
周排行