#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");
}
}
}
}
文章评论(0条评论)
登录后参与讨论