【发布时间】:2014-07-23 05:11:40
【问题描述】:
我已经使用这个函数来擦除具有特定值的元素:
void eraseFromTable(ipTable * head,int sock)
{
while(head)
{
if(head->sockNumber == sock)
{
delete head;
break;
}
head = head->next;
}
}
这是结构:
struct ipTable
{
char iPv4[INET_ADDRSTRLEN];
char iPv6[INET6_ADDRSTRLEN];
int sockNumber;
int ipv4;
int ipv6;
ipTable * next;
};
问题是当我使用擦除功能然后再次显示所有列表时 在已删除的节点的位置仍然显示 sockNumber。 我也尝试过 free() 函数,但它是一样的。 我怎样才能擦除所有内容,实际上断开该特定节点?
【问题讨论】:
-
这个函数不会破坏链表吗?删除时您没有将前一个节点与下一个节点链接...
标签: c++ linked-list