顺序环形队列的操作实现

#include
#include
#define MaxSize 100
typedef int ElemType;
typedef struct
{
    ElemType data[MaxSize];
    int front,rear;
}SqQueue;
//初始化环形队列
void InitQueue(SqQueue* &q)
{
    q=(SqQueue*)malloc(sizeof(SqQueue));
    q->front=q->rear=0;
}
//销毁环形队列
void DestroyQueue(SqQueue* &q)
{
    free(q);
}
//判断环形队列是否为空
bool QueueEmpty(SqQueue* &q)
{
    if(q->front==q->rear)
        return true;
    else
        return false;
}
//入队
bool enQueue(SqQueue* &q,ElemType &e)
{
    if((q->rear+1)%MaxSize==q->front)
        return false;
    q->rear=(q->rear+1)%MaxSize;
    q->data[q->rear]=e;
    return true;
}
//出队
bool deQueue(SqQueue* &q,ElemType &e)
{
    if(q->front==q->rear)
        return false;
    q->front=(q->front+1)%MaxSize;
    e=q->data[q->front];
    return true;
}
//输出环形队列
void printQueue(SqQueue* &q)
{
    while(q->rear!=0)
    {
            q->rear=q->rear%MaxSize;
            printf("%d ",q->data[q->rear]);
            q->rear--;
    }
}
int main()
{
    int i;
    SqQueue *q;
    InitQueue(q);
    for(i=0;i<5;i++)
    {
        if(enQueue(q,i))
        {
            printf("入队成功!\n");
        }
    }
    deQueue(q,i);
    printf("%d \n",i);
    printQueue(q);
    return 0;
}

你可能感兴趣的:(数据结构)