C语言 队列(循环队列)实现

本文深入讲解了循环队列的基本概念及其实现细节,包括循环队列的存储方式、队列满与空的判断方法,以及队列长度计算等关键操作。通过具体的C语言代码示例,介绍了如何进行循环队列的初始化、入队、出队等核心操作。

循环队列:头尾相接的顺序存储成为循环队列

满队列的判断
办法一:设置一个标志flag,当front == rear 且 flag = 0 为空队列当 front == rear 且 flag = 1 为满队列(烦琐)
办法二:
满队列时,数组中还存在一个空闲单元(简单)
满队列的条件是**(rear + 1)%QueueSize == front**

判断队列满,采用第二种方法

队列长度公式为**(rear - front + QueueSize)%QueueSize**

循环队列数据结构

typedef int Status;
typedef int QElemType;
define MAXSIZE 100


typedef struct
{
        QElemType data[MAXSIZE];
        int front;
        int rear;
}SqQueue;

初始化一个队列

Status InitQueue(SqQueue *Q)
{
        Q->front  =0;
        Q->rear = 0;
        return OK;
}

循环队列长度

int QueueLength(SqQueue Q)
{
        return (Q.rear - Q.font + MAXSIZE)%MAXSIZE;
}

循环队列的入队

Status EnQueue(SqQueue *Q,QElemType e)
{
        if((Q->rear + 1)%MAXSIZE == Q->front)
                return ERROR;

        Q->data[Q->rear] = e;
        Q->rear = (Q->rear + 1)%MAXSIZE;

        return OK;
}

循环队列的出队

Status DeQueue(SqQueue *Q,QElemType *e)
{
        if(Q->front == Q->rear)
                return ERROR;
        *e = Q->data[Q->front];
        Q->front = (Q->font +1)%MAXSIZE;//
        return OK;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为了维护世界和平_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值