循环链表删除节点操作如何写?
struct SOCKPAIRQUEUE
{
SOCKET *pSrcSock;
SOCKPAIRQUEUE *next;
}
下面这样写对吗?
void vdDelete (SOCKPAIRQUEUE *pSockPair)
{
SOCKPAIRQUEUE *preItem, *tmpItem;
if (m_pstSockList == NULL)
{
return;
}
tmpItem = m_pstSockList;
preItem = tmpItem;
while (tmpItem)
{
if (tmpItem ->pSrcSock == p_pSockPair->pSrcSock)
{
if(m_pstSockList == tmpItem)
{
if(m_pstSockList = m_pstSockList->next)
{
m_pstSockList=NULL;
}
else
{
preItem = m_pstSockList;
while( preItem->next != m_pstSockList )
{
preItem=preItem->next;
}
preItem->next = m_pstSockList->next;
m_pstSockList=m_pstSockList->next;
}
}
else
{
preItem->next = tmpItem->next;
}
delete tmpItem;
tmpItem = NULL;
printf ("%d\n", m_pstSockList);
break;
}
//not the head
preItem = tmpItem;
tmpItem = tmpItem -> next;
if(tmpItem->next == m_pstSockList)
{
break;
}
}
// LeaveCriticalSection (&m_CriticalSection);
}