// Getnext.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
typedef struct
{
unsigned long ulStart;
unsigned long ulEnd;
unsigned long ulIdx;
}TT_NextData;
unsigned long TT_GetNextData(unsigned long *pulData, unsigned long ulNum, TT_NextData stCurPara, TT_NextData *pstNextPara)
{
unsigned long ulLoop;
unsigned long startIdx;
unsigned long ulStart;
unsigned long ulEnd;
unsigned long ulCurIdx = 0xffffffff;
if (stCurPara.ulIdx == 0xffffffff)
{
startIdx = 0;
}
else
{
startIdx = stCurPara.ulIdx + 1;
}
for (ulLoop = startIdx; ulLoop < ulNum; ulLoop++)
{
if (ulLoop == startIdx)
{
ulStart = pulData[ulLoop];
ulEnd = pulData[ulLoop];
ulCurIdx= ulLoop;
continue;
}
if (pulData[ulLoop] == (ulEnd + 1))
{
ulStart = ulStart;
ulEnd = pulData[ulLoop];
ulCurIdx= ulLoop;
continue;
}
break;
}
if (ulCurIdx == 0xffffffff)
{
return 1;
}
pstNextPara->ulStart = ulStart;
pstNextPara->ulEnd = ulEnd;
pstNextPara->ulIdx = ulCurIdx;
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
unsigned long aulData[] = {1, 2, 3, 4,5, 6, 7, 8 , 9, 10,11,12, 13, 14, 18, 19, 20};
TT_NextData stNext;
stNext.ulIdx = 0xffffffff;
while (0 == TT_GetNextData(aulData, sizeof(aulData)/sizeof(aulData[0]), stNext, &stNext))
{
printf("\r\n %u-%u", stNext.ulStart, stNext.ulEnd);
}
return 0;
}