数据结构:循环队列(二)

本文详细介绍了如何使用C语言来实现循环队列的数据结构,包括相关算法和关键操作的实现。
摘要由CSDN通过智能技术生成
 假设将循环队列定义为:以域变量rear和length分别指示循环队列中队尾元素的位置和内含元素的个数。试给出此循环队列的队满条件,并写出相应的入队列和出队列的算法。
循环队列CLenQueue的类型定义如下:
typedef char QElemType;
typedef struct {
    QElemType elem[MAXQSIZE];
    int length;
    int rear;
} CLenQueue;

实现函数如下:

Status EnCQueue(CLenQueue &Q, QElemType x)
{
   if(Q.length == MAXQSIZE){
        return ERROR;//循环队列满
   }
   if(MAXQSIZE - 1 != Q.rear){
        ++Q.rear;
        Q.elem[Q.rear] = x;
   }   
   else{//rear指向循环队列的末尾时,作特殊处理使其构成循环
        Q.rear = 0;
        Q.elem[Q.rear] = x;
   }   
   ++Q.length;//当前元素个数+1
   return OK;
}

Status DeCQueue(CLenQueue &Q, QElemType &x)
{    
    if(!Q.length){
        return ERROR;//循环队列空
    }
    if(Q.rear + 1 >= Q.length){//当rear的下标大于对头指向的下标时
        x = Q.elem[Q.rear + 1 - Q.length];
    }
    else{//当rear的下标小于队头下标时
        x = Q.elem[MAXQSIZE + Q.rear + 1 - Q.length];
    }
    --Q.length;//当前元素个数-1
    return OK;
}                                         


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值