递归搜索链接列表



我正在链表上创建一个递归搜索方法,但我遇到了一个错误,我甚至无法编译,所以我甚至不知道我的方法是否正常工作。我的错误是"类型LinkedListRec中的方法搜索(E,E)不适用于参数(LinkedListRec,String)"

这是我的代码

private boolean search(Node<E> head,E list, E target){
if(list == null)
    return false;
else if (target.equals(head.data))
    return true;
else
    return search(head.next,list, target);
}
private boolean search(E list, E target){
return search(head, list, target);
}
public static void main(String[] args){
LinkedListRec<String> example1 = new LinkedListRec<String>();
example1.add("a");
example1.add("b");
System.out.println(example1);
System.out.println(search(example1,"b"));

问题是,给定代码,您不能使用泛型E作为所有这些参数的类型,因为它们并不都是E。这在两种搜索方法中都是这样。

但这并不是真正的问题,因为搜索方法已经在链表类中了。所以你有几个改变要做。

  1. 在主调用中使用example1.search(yourString);进行搜索
  2. 从您的搜索方法中完全删除列表参数;不需要它

当客户端调用公共搜索方法并传入String或他们选择的任何E时,您现在将如何进行搜索,您将把列表的头部和目标传递给递归助手;没有列表。

所以签名现在将是…

private boolean search(Node<E> head, E target)...

public boolean search(E target)... // Needs to be public.

最新更新