队列的c语言实现

本文介绍了如何使用C语言实现队列,包括顺序队列和链式队列的初始化、判断队列是否为空、元素的插入与删除操作。对于顺序队列,讨论了循环队列的满判断方法;链式队列部分则区分了带头结点和不带头结点的情况,并详细说明了入队和出队的操作步骤。同时提到了双端队列的概念。
摘要由CSDN通过智能技术生成

队列的顺序实现

typedef struct{
    int data[MaxSize];
    int front,rear;
} SqQueue;

顺序队列的初始化,front指向队头元素,rear指向队尾元素的后一个位置,即下一个应该插入的位置。

void Init(SqQueue q){
    q.front=0;
    q.rear=0;
}

判断队列是否为空

bool QueueEmpty(SqQueue q){
    if (q.rear==q.front) {
        return true;
    }else{
        return false;
    }
}

循环队列的插入操作

因为判断队列是否为空是rear==front,所以判断队列是否满了,只能是rear比front少一个,即只能牺牲一个存储单元俩判断是否满了。用模运算将存储空间在逻辑上变成了环状

bool EnQueue(SqQueue *q,int x){
    if ((q->rear+1)%MaxSize==q->front) {
        return false;
    }
    q->data[q->rear]=x;
    q->rear=(q->rear+1)%MaxSize;
    return true;
}

出队操作

bool DeQueue(SqQueue *q,int *x){
    if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值