public bool add(int e)
{
if(head == null)
{
Node n = new Node
{
element = e
};
head = n;
return true;
}
Node t = head;
if(t.next == null)
{
if(t.element == e)
{ return false; }
Node n = new Node
{
element = e
};
t.next = n;
return true;
}
t = t.next;
this.add(e);
return true;
}
这是在set中添加新节点的代码。不允许重复的值。有一个名为Sets的Main Class和一个名为Nodes的内部类。 我知道Node t = head;正在创建一个问题,无论如何要使这个递归?即使传递额外的可选参数也无济于事。
答案 0 :(得分:2)
如果我正确地理解了你的问题,为了使它递归,你需要将它分成两个函数,一个用于处理head == null
情况的公共函数和一个用于处理n.next == null
的私有函数,递归的。
public bool add(int e)
{
if (head == null)
{
head = new Node { element = e };
return true;
}
return add(head, e);
}
private bool add(Node n, int e) {
if (n.element == e)
return false;
if (n.next == null) {
n.next = new Node { element = e };
return true;
}
return add(n.next, e);
}
但是,我建议做一些类似于下面的事情,它在一个函数中执行所有操作:
public bool add(int e)
{
if (head == null)
{
head = new Node { element = e };
return true;
}
if (head.element == e)
return false;
Node n = head;
while (n.next != null) {
if (n.element == e)
return false;
n = n.next;
}
n.next = new Node { element = e };
return true;
}