递归搜索链表

Recursive Search LinkedList

我在链表上创建递归搜索方法时出现错误,我什至无法编译,所以我什至不知道我的方法是否正常工作。我的错误是 "The method search(E, E) in the type LinkedListRec is not applicable for the arguments (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秒。两种搜索方式都是如此。

但这在这里并不是真正的问题,因为搜索方法已经在链表中 class。因此,您需要进行一些更改。

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

当客户端调用 public 搜索方法并传入字符串或他们选择的任何内容时 E 你将如何进行搜索,你将传递给你的递归助手你的名单和目标的负责人;没有列表。

所以签名现在是...

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

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