#include <iostream>
using namespace std;
typedef unsigned long ULONG;
#define MAX_WINDOWS 1024
typedef struct _Ext_Inte_
{
ULONG total;
ULONG head;
ULONG tail;
ULONG ext_info[MAX_WINDOWS];
ULONG ext_error_code[MAX_WINDOWS];
}EXTINTEWINDOW,*pEXTINTEWINDOW;
typedef struct _Ext_Inte_Data_
{
ULONG ext_info;
ULONG ext_error_code;
}EXTINTEDATA,*pEXTINTEDATA;
void InitData(pEXTINTEWINDOW pExtInteWin)
{
pExtInteWin->total=0;
pExtInteWin->head=0;
pExtInteWin->tail=0;
pExtInteWin->ext_info[MAX_WINDOWS];
pExtInteWin->ext_error_code[MAX_WINDOWS];
}
bool PushData(pEXTINTEWINDOW pExtInteWin,pEXTINTEDATA pExtInteData)
{
if(MAX_WINDOWS==pExtInteWin->total) return false;
pExtInteWin->ext_info[pExtInteWin->tail]=pExtInteData->ext_info;
pExtInteWin->ext_error_code[pExtInteWin->tail]=pExtInteData->ext_error_code;
if(MAX_WINDOWS==pExtInteWin->tail+1) pExtInteWin->tail=0;
else pExtInteWin->tail++;
pExtInteWin->total++;
return true;
}
bool PopData(pEXTINTEWINDOW pExtInteWin,pEXTINTEDATA pExtInteData)
{
if(0==pExtInteWin->total) return false;
pExtInteWin->ext_info[pExtInteWin->tail]=pExtInteData->ext_info;
pExtInteWin->ext_error_code[pExtInteWin->tail]=pExtInteData->ext_error_code;
if(MAX_WINDOWS==pExtInteWin->head+1) pExtInteWin->head=0;
else pExtInteWin->head++;
pExtInteWin->total--;
return true;
}
bool ShowData(pEXTINTEWINDOW pExtInteWin)
{
int i=0;
if(0==pExtInteWin->total) return false;
printf("Total:%4d;Head:%4d;Tail:%4d\n",pExtInteWin->total,pExtInteWin->head,pExtInteWin->tail);
printf("number ext_info ext_error_code\n");
if(pExtInteWin->head<pExtInteWin->tail)
{
for(i=pExtInteWin->head;i<pExtInteWin->tail;i++)
{
printf("Num.%-4d 0x%-10x 0x%-10x\n",i,pExtInteWin->ext_info[i],pExtInteWin->ext_error_code[i]);
}
}
else
{
for(i=0;i<pExtInteWin->tail;i++)
{
printf("Num.%-4d 0x%-10x 0x%-10x\n",i,pExtInteWin->ext_info[i],pExtInteWin->ext_error_code[i]);
}
for(i=pExtInteWin->head;i<MAX_WINDOWS;i++)
{
printf("Num.%-4d 0x%-10x 0x%-10x\n",i,pExtInteWin->ext_info[i],pExtInteWin->ext_error_code[i]);
}
}
return true;
}
int main()
{
int push=1000;
int pop=990;
EXTINTEWINDOW ExtInteWindow;
EXTINTEDATA ExtInteData;
InitData(&ExtInteWindow);
ExtInteData.ext_error_code=0x34;
ExtInteData.ext_info=0x800000d1;
while(push--)
{
PushData(&ExtInteWindow,&ExtInteData);
}
while(pop--)
{
PopData(&ExtInteWindow,&ExtInteData);
}
push=200;
while(push--)
{
PushData(&ExtInteWindow,&ExtInteData);
}
ShowData(&ExtInteWindow);
return 0;
}
用于队列的数据函数供今后使用
最新推荐文章于 2013-11-17 17:15:26 发布