算法与数据结构(c语言)——顺序队列存储结构及实现

本文介绍了如何使用C语言实现顺序队列,特别是通过循环队列来避免伪满队列问题。文章详细阐述了判断队列为空和满的条件,并给出了顺序队列的结构及对队列的一系列操作。最后,展示了测试代码及其运行结果。
摘要由CSDN通过智能技术生成

使用循环队列,避免出现伪满队列的情况

  • 判断队列为空的条件:rear == front;
  • 判断队列为满的条件:(rear+1)%MAXSIZE == front;

空出一个数组元素空间,用以区别开来满队列和空队列。

 

一个顺序队列的结构: 

typedef struct{
    // 定义一个数组用来存储所有的数据元素
    Element data[MAXSIZE];
    // 第一个元素下标
    int front;
    // 最后一个元素的下标
    int rear;
}SqQueue;

对顺序队列的操作:

// 初始化一个线性表
SqQueue* InitSQueue(){
    SqQueue *sq = (SqQueue *)malloc(sizeof(SqQueue));

    if(!sq){
        exit(0);
    }
    sq->front = 0;
    sq->rear = 0;

    return sq;
}

// 判断是否为空的队列
bool SQueueEmpty(SqQueue *sq){
    return sq->rear == sq->front;
}
// 是否为满的队列
bool SQueueFull(SqQueue *sq){
    return (sq->rear+1)%MAXSIZE == sq->front;
}

Status EnSQueue(SqQueue *sq,Element v){
    // 判断队列是否已满
    if(SQueueFull(sq)){
        return ER
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值