您的位置:首页 > 其它

单链表操作可如此简单

2012-03-22 18:36 375 查看
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()功能相同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: