循环队列的优点是什么?如何判断它的空和满?假设循环队列只设rear和quelen来分别指示队尾元素的位置和队中元素的个数

1个回答

  • 有个设了队头,队尾的,你参考下,入队的时候队尾指针变,出队的时候队头指针变

    int EnQueue(CirQueue *Q, DataType e)//入队

    {

    if (Q->quelen == QueueSize) //队满条件

    {

    printf("Queue is full! Cannot EnQueue.n");

    return 0;

    }

    else

    {

    Q->data[Q->rear] = e;

    Q->rear = (Q->rear + 1) % QueueSize;//实现循环

    Q->length++;

    return 1;

    }

    }

    DataType DeQueue(CirQueue *Q)//出队

    {

    if (Q->length == 0) //队空

    {

    printf("Queue is empty! Cannot DeQueue.n");

    return 0;

    }

    else

    {

    DataType ret = Q->data[Q->front];//记录出队元素的值

    Q->front = (Q->front + 1) % QueueSize;//该语句用来实现循环

    Q->length--;

    return ret;//返回出队元素值

    }

    }