// 队列尺寸
#define Max_Count 4096
#define High_Index 4095 // = Max_Count - 1
// 变量
void* List[Max_Count];
unsigned long Push_Count;
unsigned long Push_Index;
unsigned long Pop_Count;
unsigned long Pop_Index;
// 初始化队列
void InitQueue()
{
Push_Count = 0;
Push_Index = 0;
Pop_Count = 0;
Pop_Index = 0;
memset(List, 0, sizeof(List));
}
// 加入
bool Push(void* AData)
{
if (Push_Count - Pop_Count < Max_Count)
{
List[Push_Index] = AData;
Push_Count++;
if (Push_Index == High_Index)
Push_Index = 0;
else
Push_Index++;
return true;
}
else
return false;
}
// 取出
void* Pop()
{
// 初始化
void* result = NULL;
// 判断是否为空
if (Push_Count != Pop_Count)
{
result = List[Pop_Index];
Pop_Count++;
if (Pop_Index == High_Index)
Pop_Index = 0;
else
Pop_Index++;
}
// 返回结果
return result;
}