关于集合的问题。。。还请大家帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/30 09:33:33
下面这段代码来自网上的:

//! 添加一个元素到集合里
void Set::Add(int element)
{
// 添加一个元素到一个空集合
if (m_phead == NULL)
{
m_phead = new Node();
m_phead->data = element;
m_phead->next = NULL;
m_nsize++;

return;
}

if (Find(element) == -1) //这里为什么不是 if (Find(element) !== -1) ??? 我想 添加一个元素到一个非空集合
{
Node* temp = new Node();
temp->data = element;
temp->next = m_phead;
m_phead = temp;
m_nsize++;
}
}

这段代码是往集合里添加元素的,但是不能添加重复的元素,请问怎么改成可以添加重复的元素?另外有个问题://这里为什么不是 if (Find(element) !== -1) ??? 我想 添加一个元素到一个非空集合

这段程序有两个判断,第一个判断
if (m_phead == NULL)
判断的是这个集合是否为空,如果为空,就直接把元素加入到链表的最开始,如果不为空,再继续判断
if (Find(element) == -1)
这里判断的不是集合为不为空,到这里这个集合已经一定是不为空的了,这里判断的是在集合中能不能找到element这个元素,因为需要不能重复,所以只有等于-1的时候,也就是找不到的时候,才进行下面的添加工作,如果不等于-1的话,也就是说Find(element)有一个不为-1的值,这里应该是element这个元素在链表中的位置,因为不能重复,所以就不做下面的工作了。

如果可以添加重复的元素,就像楼上的兄台说的,把第二个条件判断删了。

把条件判断直接删了不就可以了吗