一组a​​dd方法问题的无序预告链接列表实现

时间:2012-10-25 16:20:54

标签: java

我有一个add方法,用于创建一个无序的链表,并且有一个由

定义的预告片节点
 ListNode<E> front = new ListNode<E>(null,null);

从我的理解,我可以继续在列表的前面添加值BUT,因为这是一个Set的链接列表实现,我不能有重复的值,我需要检查集合(每个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。那么,展望未来,我对如何实现这一点的理解是正确的吗?我该如何修复我的包含方法?

1 个答案:

答案 0 :(得分:2)

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

浏览所有以前的节点,直到没有人,检查它们。

浏览所有以下节点,直到没有人,检查它们。

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

- TB