0
点赞
收藏
分享

微信扫一扫

Day6:循环队列的C语言实现

何以至千里 2022-03-11 阅读 51

1. 结构体定义

typedef struct {
    int data[MAXSIZE];      // 队列数据
    int qFront, qRear;      // 队列头、尾指针
}CycleQueue;

2. 初始化

void CycleQueueInit(CycleQueue *cq)
{
    cq->qFront = 0;
    cq->qRear = 0;
}

3. 队列判空

int CycleQueueEmpty(CycleQueue *cq)
{
    return cq->qFront == cq->qRear ? 1 : -1;
}

4. 队列判满

int CycleQueueFull(CycleQueue *cq)      // 区别队列空和满,采取牺牲空间法
{
    return (cq->qRear + 1) % MAXSIZE == cq->qFront ? 1 : -1;
}

5. 入队

int CycleQueueEnQueue(CycleQueue *cq, int e)
{
    if(CycleQueueFull(cq) > 0)
        return -1;
    cq->data[cq->qRear] = e;
    cq->qRear = (cq->qRear + 1) % MAXSIZE;
    return 1;
}

6. 出队

int CycleQueueDeQueue(CycleQueue *cq, int *e)
{
    if(CycleQueueEmpty(cq) > 0)
        return -1;
    *e = cq->data[cq->qFront];
    cq->qFront = (cq->qFront + 1) % MAXSIZE;
    return 1;
}
举报

相关推荐

0 条评论