⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queue._c

📁 mp3代码 要用的干净下啊 希望用东西共享啊
💻 _C
字号:
/*********************************************************************************************************
**				          			QUEUE队列头文件 
**                                  (c) Copyright 2006-2008, limaokui
**                                           All Rights Reserved
**
**                                             V1.0.0
**
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名:queue.h
**创   建   人: 李茂奎
**最后修改日期:  2006年8月29日
**描        述:  
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 李茂奎
** 版  本: V1.00
** 日 期: 2006年8月29日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
** 修改人: 李茂奎
** 版  本:
** 日 期:
** 描 述: 
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人:    李茂奎																					  
** 日 期:	 2006年8月29日
** 描 述:   
**
**------------------------------------------------------------------------------------------------------
*********************************************************************************************************
**使用说明:在定义队列时请定义一个静态数组,并将此数组传递给队列的data,并将数据长度传递给queuesize
  #define TWI_SEND_DATA_BUFFER_SIZE 100
  static uint8 Twi_SendData[TWI_SEND_DATA_BUFFER_SIZE];
  CirQueue Twi_SendBuffer={0,0,0,Twi_SendData,TWI_SEND_DATA_BUFFER_SIZE,QUEUE_OK};

*********************************************************************************************************/
#include "config.h"
/*********************************************************************************************************
** 函数名称:InitQueue
** 功能描述:初始化队列
** 输 入:  
** 输  出:             
** 全局变量: 
** 调用模块: 
** 说明:
** 注意:    
** 日 期:   2006年8月29日
********************************************************************************************************/
void InitQueue(CirQueue * Q)
{
CLI();
Q->front=Q->rear=0;
Q->count=0;
Q->errorcode= QUEUE_OK;
Q->memo=0;
Q->status=TWI_DATA_FREE;
SEI();
}
/*********************************************************************************************************
** 函数名称:EmptyQueue(CirQueue *Q)
** 功能描述:判断队列是否为空
** 输 入:  
** 输  出:             
** 全局变量: 
** 调用模块: 
** 说明:
** 注意:    
** 日 期:   2006年8月29日
********************************************************************************************************
uint8 EmptyQueue(CirQueue * Q)
{
return Q->count==0;
}
/*********************************************************************************************************
** 函数名称:FullQueue(CirQueue *Q)
** 功能描述:判断队列是否为满
** 输 入:  
** 输  出:             
** 全局变量: 
** 调用模块: 
** 说明:
** 注意:    
** 日 期:   2006年8月29日
********************************************************************************************************

uint8 FullQueue(CirQueue * Q)
{
return (Q->count == Q->queuesize);
}
/*********************************************************************************************************
** 函数名称:EnQueue
** 功能描述:入队
** 输 入:  
** 输  出:             
** 全局变量: 
** 调用模块: 
** 说明:
** 注意:    
** 日 期:   2006年8月29日
********************************************************************************************************/
void EnQueue(CirQueue * Q,uint8 x)
{
if(FullQueue(Q))
   {
   Q->errorcode=QUEUE_OVERFLOW;
   Q->count=Q->queuesize;
   return;
   }
CLI();
Q->count++;
Q->data[Q->rear]=x;
Q->rear=(Q->rear+1)%Q->queuesize;
Q->errorcode=QUEUE_OK;
SEI();
}
/*********************************************************************************************************
** 函数名称:DeQueue
** 功能描述:出队
** 输 入:  
** 输  出:             
** 全局变量: 
** 调用模块: 
** 说明:
** 注意:    
** 日 期:   2006年8月29日
********************************************************************************************************/
uint8 DeQueue(CirQueue * Q)
{
uint8 temp;
if(EmptyQueue(Q))
   {
   Q->errorcode=QUEUE_UNDERFLOW;
   return FALSE;
   }
CLI();
Q->count--;
temp=Q->data[Q->front];
Q->front=(Q->front+1)%Q->queuesize;
Q->errorcode=QUEUE_OK;
SEI();
return temp;
}
/*********************************************************************************************************
** 函数名称:FrontQueueData
** 功能描述:出队
** 输 入:  
** 输  出:             
** 全局变量: 
** 调用模块: 
** 说明:
** 注意:    
** 日 期:   2006年8月29日
********************************************************************************************************/
uint8 FrontQueueData(CirQueue * Q)
{
if(EmptyQueue(Q))
   {
   Q->errorcode=QUEUE_UNDERFLOW;
   return FALSE;
   }
return Q->data[Q->front];
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -