用于队列的数据函数供今后使用

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值