gpt4 book ai didi

java - set add方法问题的无序尾部链表实现

转载 作者:行者123 更新时间:2023-11-30 04:37:38 24 4
gpt4 key购买 nike

我有一个 add 方法,用于创建一个无序的链表,并具有由 定义的尾节点

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

据我了解,我可以继续将值添加到列表的前面,但是因为这是集合的链接列表实现,并且我不能有重复的值,所以我需要检查集合(来自前面到预告片节点)以确保它没有我试图添加到列表中的新值。这是我的添加方法。

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;
}

我不知道如何使该方法包含,检查对象 o 的每个节点,如果它在链表中则返回 true,否则返回 false。那么,展望 future ,我对如何实现这一点的理解是否正确?我怎样才能修复我的 contains 方法?

最佳答案

每个节点都知道其之前和之后的内容。因此:

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

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

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

--待定

关于java - set add方法问题的无序尾部链表实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13072947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com