队列源码

来源:互联网 发布:java逻辑思维面试题 编辑:程序博客网 时间:2024/06/05 18:57
#define QUEUE_SIZE 3//队列的大小typedef struct{int Queue[QUEUE_SIZE];int Rd;//读位置int Wr;//写位置}QueueType;static QueueType tQueue;//定义队列int QueueIsEmpty();int QueueIsFull();/*** @brief队列初始化* @param[in]*pTmp:队列数据* @param[out]NO* @returnNO* @note */void QueueInit(QueueType *pTmp){memset(&tQueue,0,sizeof(QueueType));}/*** @brief从队列中读出一个元素* @param[in]NO* @param[out]*p:读出的元素* @return0:OK-1:队列已空,读取失败* @note */int QueueRd(int *p){if (QueueIsEmpty()==-1){tQueue.Rd  =(tQueue.Rd+1)%QUEUE_SIZE;//首尾相接*p =tQueue.Queue[tQueue.Rd];return 0;}else{return -1;}}/*** @brief向队列写入一个元素* @param[in]Value:写入的元素* @param[out]NO* @return0:OK-1:队列已满,写入失败* @note */int QueueWr(int Value){if (QueueIsFull()==-1){tQueue.Wr  =(tQueue.Wr+1)%QUEUE_SIZE;//首尾相接tQueue.Queue[tQueue.Wr] =Value;return 0;}else{return -1;}}/*** @brief判断队列是否是满的* @param[in]NO* @param[out]NO* @return0:队列已满-1:队列非满* @note */int QueueIsFull(){if (   ((tQueue.Rd==0) && (tQueue.Wr+1==QUEUE_SIZE))|| (tQueue.Rd-tQueue.Wr==1)){return 0;}else{return -1;}}/*** @brief判断队列是否是空的* @param[in]NO* @param[out]NO* @return0:队列已空-1:队列非空* @note */int QueueIsEmpty(){if (tQueue.Rd == tQueue.Wr){//已空return 0;}else{return -1;}}  void main() {int i=0,tmp,*p;p =&tmp;QueueInit(&tQueue);while(1){QueueWr(++i);QueueRd(p);}}

原创粉丝点击