我有一个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。那么,展望未来,我对如何实现这一点的理解是正确的吗?我该如何修复我的包含方法?
答案 0 :(得分:2)
每个节点都知道之前是什么,然后是什么。因此:
浏览所有以前的节点,直到没有人,检查它们。
浏览所有以下节点,直到没有人,检查它们。
(因为它听起来像是一个练习,没有代码。但你只需要将书面文字“翻译”成代码)
- TB