顺序队列:创建、初始化、求表长、入队、出队、取队头

创建

//顺序队列的创建
typedef struct
{
    int *base;//初始化分配的内存地址
    int front;//头指针
    int rear;//尾指针
}Squeue;

初始化

//队列的初始化
bool InitQueue(Squeue &Q)
{
    Q.base = new int[MaxQsize];
    if (!Q.base)
        return false;
    Q.front = Q.rear = 0;
    return true;
}

求队列表长

//求队列长
int GetQueueLength(Squeue Q)
{
    return (Q.front - Q.rear + MaxQsize) % MaxQsize;
}

队列入队

//队列入队
bool EnQueue(Squeue &Q,int e)
{
    //队满的情况
    if ((Q.rear + 1) % MaxQsize == Q.front)
        return false;
    Q.base[Q.rear] = e;
    Q.rear = (Q.rear + 1) % MaxQsize;
    return true;
}

队列出队

//队列出队
bool DeQueue(Squeue &Q, int &e)
{
    //队列为空的情况
    if (Q.front == Q.rear)
        return false;
    e = Q.base[Q.front];
    Q.front = (Q.front + 1) % MaxQsize;
    return true;
}

取队头

//取队头
int GetQueueHead(Squeue Q)
{
    return Q.base[Q.front];
}

 

posted @ 2020-10-25 22:52  小迪xiaodi  阅读(518)  评论(0)    收藏  举报