![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
//循环队列的表示与实现
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define OVERFLOW -2
#define MAXSIZE 100
struct SqQueue
{
int *base;
int front;
int rear;
};
int InitQueue(struct SqQueue *Q)
{
Q->base=(int *)malloc(MAXSIZE*sizeof(int));
if(!Q->base)
exit(OVERFLOW);
Q->front=Q->rear=0;
return OK;
}
int SqEmpty(struct SqQueue *Q)
{
if(Q->front==Q->rear)
return TRUE;
else
return FALSE;
}
int QueueLength(struct SqQueue *Q)
{
return (Q->rear-Q->front)%MAXSIZE;
}
int EnQueue(struct SqQueue *Q,int e)
{
if((Q->rear+1)%MAXSIZE==Q->front)
return ERROR;
Q->base[Q->rear]=e;
Q->rear=(Q->rear+1)%MAXSIZE;
return OK;
}
int DelQueue(struct SqQueue *Q,int *e)
{
if(Q->front==Q->rear)
return ERROR;
*e=Q->base[Q->front];
Q->front=(Q->front+1)%MAXSIZE;
return OK;
}
void SqQueue()
{
struct SqQueue Q;
int N;
int e;
InitQueue(&Q);
scanf("%d",&N);
while(N)
{
EnQueue(&Q,N%8);
N=N/8;
}
while(!SqEmpty(&Q))
{
DelQueue(&Q,&e);
printf("%d",e);
}
}
int main()
{
printf("Input :\n");
SqQueue();
printf("\n");
return OK;
}
![](https://www.cnblogs.com/Emoticons/baimantou/202015214.gif)
![](https://www.cnblogs.com/Emoticons/baimantou/202015214.gif)
![](https://www.cnblogs.com/Emoticons/baimantou/202015214.gif)