1

我有一个添加方法来创建一个无序的链表,并且有一个由定义的拖车节点

 ListNode<E> front = new ListNode<E>(null,null);

据我了解,我可以继续将值添加到列表的前面,但是因为这是 Set 的 Linked List 实现并且我不能有重复的值,所以我需要检查集合(从前面到拖车的每个 listnode节点)以确保它没有我要添加到列表中的新值。这是我的添加方法。

public boolean add(E e) {

  ListNode<E> newNode = new ListNode<E>(e, null);

      //point to trailer      
      newNode.next = front.next;
      //front now points to newNode
      front.next = newNode;
      //front->newNode->trailer

       objectCount++;

        return true;

}

现在,要检查 newNode 是否不在链接列表中,我需要实现一个 contains 方法,该方法检查列表中的每个元素,如果它在链接列表中则返回 true。如果它返回 true,那么我不执行上面的 add 方法,如果不执行,那么我成功添加了值。所以,我在想一些事情:

 if(this.contains(newNode))
   return false;
 else {
   newNode.next = front.next;
   front.next = newNode;
  }

但我不知道如何成功实现我的 contains 方法。这是我所拥有的:

public boolean contains(Object o) {
   ListNode<E> o1 = (ListNode<E>) o;
  if (o1.value == front.next.value)
          return true;
      else
          return false;
}

我不确定如何使方法包含,检查每个节点的 Object o,如果它在链表中则返回 true,否则返回 false。那么,展望未来,我对如何实现这一点的理解是否正确?以及如何修复我的 contains 方法?

4

1 回答 1

2

每个节点都知道它之前和之后是什么。因此:

遍历所有以前的节点,直到没有人为止,检查它们。

遍历所有以下节点,直到没有人为止,检查它们。

(因为这听起来像是一个练习,没有代码。但你只需要将书面文字“翻译”成代码)

--待定

于 2012-10-25T16:28:46.710 回答