C语言队列

C对列队列,先进先出。大神看下有毛病没。

注意:定义MAXQUEUE 20字节,只能存储19字节的内容。有一字节空,是判断队列是否满的标志。

#define MAXQUEUE 20
typedef struct tagMsgQueue
{   
    int uFront,uRear;    
    int m_Msg[MAXQUEUE];
}MSGQUEUE; 

#define Q_FULL(m) ((((m)->uRear + 1) % MAXQUEUE) == (m)->uFron)
#define Q_EMPTY(m) ((m)->uRear == (m)->uFront )
#define Q_INIT(m)  (m)->uFront = 0; (m)->uRear = 0;


bool EnQueue(MSGQUEUE *pMsg, int msg)
{    
    //int nIntEn;    //TODO:Need add enter critical sections codes    
    if (!Q_FULL(pMsg))    
    {        
        //nIntEn = (pMsg->uRear++) % MAXQUEUE;        
        //pMsg->m_Msg[nIntEn] = msg;        
        pMsg->m_Msg[pMsg->uRear++] = msg;
        pMsg->uRear = pMsg->uRear % MAXQUEUE;
        
        return true;    
    }    
    return false;
} 

bool DeQueue(MSGQUEUE *pMsg, int *pDeMsg)
{    if (!Q_EMPTY(pMsg))    
     {        
        *pDeMsg = pMsg->m_Msg[pMsg->uFront];        
        pMsg->uFront = (pMsg->uFront+1)%MAXQUEUE;        
        return true;    
     }    
     else    
     {        
        Q_INIT(pMsg);        
        return false;    
      }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值