Java LinkedList查找方法



我在Java Lab分配上遇到困难。

这是我的代码和指令:

如果不存在钥匙,则应该 返回上一个节点。如果没有以前的(key == aaron), 返回null。

 protected Node<K, V> find (K key, Node start) {
  for (Node<K, V> node = start == null ? head : (Node<K, V>) start;
  node != null; node = node.next){
    if(key.equals(node.key)){
        return node;
    }
    else if(!key.equals(node.key)){
        node=node.next;
    }
    else{
        return null;
    }
  }
  return tail;
}

c e g i k m o q s u w y

2 4 6 8 10 12 14 16 18 20 22 24

这是linkedlist。

我的输出是C E G I K M O Q S U W Y2 4 6 8 10 12 14 16 18 20 22 24

containskey(a)= false

containskey(c)= true

containskey(l)= false

containskey(m)= false

containskey(y)= true

containskey(z)= false

但对于m,它也应该返回true我如何解决此问题?

您可以使用双链接列表或(这意味着您必须在节点类中进行更改)另一个是当指向头部的指向头后,另一个必须节点,

node p = null ; 
node q = head ;

每次循环您将制作

 p = q and q = q.next();

所以,如果您找不到钥匙,您将返回P如果找到它,您将返回Q。

最新更新