Bootstrap

C语言数据结构之循环队列

#include <stdio.h>
#define MAX 5
typedef struct
{
    int QueueCache[MAX];
    int front;
    int rear;
}Queue;


Queue *initQueue(Queue *q)
{
    q->front=0;
    q->rear=0;
    return q;
}
int IsFull(Queue *q)
{
    if((q->front+1)%MAX==q->rear)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
int IsEmpty(Queue *q)
{
    if(q->front==q->rear)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}


int InsertElement(Queue *q,int element)
{
    if(IsFull(q))
    {
        return -1;
    }
    else
    {
        q->QueueCache[q->front]=element;
        q->front=(q->front+1)%MAX;
        return 0;
    }
}
int DeleElement(Queue *q,int *element)
{
    if(IsEmpty(q))
    {
        return -1;
    }else
    {
         *element = q->QueueCache[q->rear];
         q->rear=(q->rear+1)%MAX;
         return 0;
    }
}
int main()
{
    Queue *q;
    int element=0;
    q = (Queue *)malloc(sizeof(Queue));
    q=initQueue(q);
    for(int i=0;i<10;i++)
    {
        if(InsertElement(q,i)==-1)
        {
            break;
        }
    }
    for(int i=0;i<2;i++)
    {
        if(DeleElement(q,&element)==-1)
        {
            printf("Empty\n");
        }else
        {
            printf("%d\n",element);
        }
    }
    printf("insert a element\n");
    if(InsertElement(q,45)==-1)
    {
        printf("Full\n");
    }
    if(InsertElement(q,56)==-1)
    {
        printf("Full\n");
    }
    for(int i=0;i<4;i++)
    {
        if(DeleElement(q,&element)==-1)
        {
            printf("Empty\n");
        }else
        {
            printf("%d\n",element);
        }
    }


    free(q);
}
;