普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 6491|回复: 0

循环队列简单模型

 关闭 [复制链接]

139

主题

382

帖子

1531

积分

金牌会员

Rank: 6Rank: 6

积分
1531
发表于 2015-9-10 12:55:30 | 显示全部楼层 |阅读模式
#include <stdio.h>
#define MAX_QUE  8
#define EMPTY    0
#define QUE_OK   1
typedef struct
{
    unsigned int udHead;
    unsigned int udTail;
    unsigned int audBuff[MAX_QUE];
}T_TxQue;
unsigned int gdTxData;
T_TxQue gtTxQue;

void SendQue(unsigned int udRxData)
{
      if((gtTxQue.udHead + 1) % (MAX_QUE ) == gtTxQue.udTail)  /* 判断队列满 */
{
      printf("队列满,head = %d, tail = %d\n",gtTxQue.udHead ,gtTxQue.udTail);
      return;
}
gtTxQue.audBuff[gtTxQue.udHead] = udRxData;
gtTxQue.udHead++;
if(gtTxQue.udHead == MAX_QUE)
{
   gtTxQue.udHead = 0;
}
}
unsigned int ReadTxQue()
{
if(gtTxQue.udHead != gtTxQue.udTail)
{
   gdTxData = gtTxQue.audBuff[gtTxQue.udTail];
gtTxQue.udTail++;
if(gtTxQue.udTail == MAX_QUE)
{
   gtTxQue.udTail = 0;
}
return QUE_OK;
}
else
{
   return EMPTY;
}
}
int main()
{
unsigned int udKeyData;
unsigned int udRtn;
gtTxQue.udHead = 0;
gtTxQue.udTail = 0;

while(1)
{
printf("入队数据:");
scanf("%d",&udKeyData);
        if(udKeyData != 20)  /* 不等于20,数据入队,等于20出队,20是随便写的 */
        {
                   SendQue(udKeyData);
        }
          else
         {
              udRtn = ReadTxQue();
                 if(EMPTY != udRtn)
              {
                 printf("队尾数据:%d\n",gdTxData);
              }
              else
             {
                     printf("队列为空\n");
              }
          }

     }
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-9 08:54 , Processed in 0.082958 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表