struct UserData
{
int value;
struct UserData* next;
};
static UserData* first_value = NULL;
void RegisterUserData(UserData* data)
{
UserData** pp = &first_value;
while (*pp)
pp = &(*pp)->next;
*pp = data;
data->next = NULL;
}
void RegisterUserData2(UserData* data)
{
if (first_value == NULL)
{
first_value = data;
}
else
{
UserData* p = first_value;
UserData* q = first_value->next;
while (p && q)
{
p = q;
q = p->next;
}
p->next = data;
}
data->next = NULL;
}
UserData* GetUserDataNext(UserData* data)
{
return data ? data->next : first_value;
}
UserData g_Data1 = {
10,
NULL,
};
UserData g_Data2 = {
20,
NULL,
};
UserData g_Data3 = {
30,
NULL,
};
int _tmain(int argc, _TCHAR* argv[])
{
RegisterUserData(&g_Data1);
RegisterUserData(&g_Data2);
RegisterUserData(&g_Data3);
UserData* pUserData = first_value;
do
{
if (pUserData)
printf("%d===== \n", pUserData->value);
pUserData = GetUserDataNext(pUserData);
}while(pUserData != NULL && pUserData != first_value);
return 0;
}
说明:
RegisterUserData()和RegisterUserData2()功能相同。