您的位置:首页 > 编程语言

关于链表的创建 代码

2009-04-22 15:54 267 查看
struct SocketObj
{
SOCKET socket; //当前对象的socket
BOOL listening; //该套接字是否已经
SocketObj *next, //向后
*prev; //向前
};
SocketObj *g_pSocketList = NULL; //Socket连表
SocketObj *g_pSocketEnd = NULL; //连表的尾部
int g_nSocketCount = 0;
HANDLE g_hSelect;
//创建SocketObj
SocketObj* GetSocketObj(SOCKET s,BOOL listening)
{
SocketObj *newSocketObj = NULL;
newSocketObj = (SocketObj*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(SocketObj));
if(newSocketObj == NULL)
{
cout<<"GetSocketObj: HeapAlloc failed: "<< GetLastError()<<endl;
ExitProcess(-1); //结束进程
}
newSocketObj->socket = s;
newSocketObj->listening = listening;
return newSocketObj;
}

//插入一个SocketObj
void InserSocketObj(SocketObj *obj)
{
obj->next = obj->prev = NULL;
if(g_pSocketList == NULL)
{
g_pSocketList = g_pSocketEnd = obj;
}
else
{
obj->prev = g_pSocketEnd;
g_pSocketEnd->next = obj;
g_pSocketEnd = obj;
}
g_nSocketCount++;
}
//删除
void RemoveSocketObj(SocketObj *obj)
{
if(obj->prev)
{
obj->prev->next = obj->next;
}
if(obj->next)
{
obj->next->prev = obj->prev;
}
if(obj == g_pSocketList)
{
g_pSocketList = obj->next;
}
if(obj == g_pSocketEnd)
{
g_pSocketEnd = obj->prev;
}
g_nSocketCount--;
HeapFree(GetProcessHeap(),0,obj);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐