2013-09-21 107 views
0

我需要使用递归编写一个contains方法,这意味着查找是否在其中一个节点中存在“元素”。如何使用递归编写链表的包含方法? java

public class SortedSetNode implements Set 
    { 
     protected String value; 
     protected SortedSetNode next; 
    } 

    public boolean contains(String el) {   

     if (next.getValue().equals(el)) 
     { 
      return true; 
     } 
     else 
     { 
      next.contains(el); 
     } 

    } 
+0

你可能需要重写你的'contains'方法看到,因为你的类实现'java.util.set'和类有一个'contains'方法以及 – smac89

+0

在这种情况下使用递归是一个奇怪的要求:如果列表足够大,并且该项目接近结尾,则将得到一个StackOverflowError(10k个元素应该足以打破它)... – assylias

回答

0

well next.contains(el),只是在此之前添加return语句!

if (value.equals(el)) { 
    return true; 
} 

return next.contains(el); 

当然,你要处理的时候next是无效的和(即你在最后一个元素),然后返回false。

+0

如果next_为null(未找到字符串),它将抛出NullPointerException – alfasin

+0

这就是为什么有我的答案的最后一句:) – coyotte508

+0

我已更正为此: '公共布尔包含(String el){' \t \t'if(next!= null)' \t'{ \t \t return false; \t} \t否则,如果(next.getValue()等于(EL)) \t { \t \t回归真实; \t} \t其他 \t { \t \t回next.contains致发光(EL); \t} \t }' – lauraxx

0
public boolean contains(String el) { 
    if (value.equals(el)) return true; 
    if (next == null) return false; 
    else return next.contains(el); 
} 
+1

return'false' not'dalse' – smac89

+0

@ Smac89 - 他可能已经将'dalse'定义为一个常量:-) –

+0

@StephenC ahh的确如此。但常量应该大写? – smac89

相关问题