【发布时间】:2019-03-15 21:35:42
【问题描述】:
我正在循环的 DoublyLinkedList 类以及 Node 内部类中实现 add(E) 方法。
节点应该被实现为私有内部类。
DoublyLinkedList 的“first”属性应该指向列表中的第一个节点。它的“size”属性应该存储列表中元素的数量。
我在我的 add 方法上苦苦挣扎,因为感觉没有任何问题,而且我不知道我还能添加什么代码来修复它。
因此简单介绍一下add方法应该做什么。
add(E) 方法应该将 value 参数添加到列表的末尾。请务必解决列表为空和/或添加的元素是列表中的第一个的情况。
这是我的代码:
public class DoublyLinkedList<E>
{
private Node first;
private int size;
@SuppressWarnings("unchecked")
public void add(E value)
{
if(first == null)
{
first = new Node(value, null, null);
first.next = first;
first.prev = first;
}
else
{
first = new Node(value, first.next, first.prev);
first.next = first.prev;
first = first.next;
first.prev = first;
}
size++;
}
private class Node<E>
{
private E data;
private Node next;
private Node prev;
public Node(E data, Node next, Node prev)
{
this.data = data;
this.next = next;
this.prev = prev;
}
}
}
【问题讨论】:
-
为了澄清其他阅读本文的人,我假设循环意味着这是一个循环链表。为什么如果 size == 1,那么 first->next = first=>prev = first。
-
@rcgldr 很抱歉,这令人困惑。那我的方法错了吗?
-
这只是澄清。我假设您的班级将其称为循环而不是循环。一些阅读本文的人可能没有意识到这意味着同样的事情。
-
@AdanVivero - 虽然,你似乎在这里得到了答案;但我想我可能想为这个线程的未来读者分享更多东西。周末在这方面思考了很多,我觉得有一个循环的数据结构可能不是一个好主意。您打算在这里做的是以循环方式访问数据结构,访问数据与实际存储数据的方式不同。想想这里的“职责分离”。理想情况下,您可能希望从您的类中返回一个迭代器并实现循环读取的概念
-
@RahulR。这正是我正在做的事情。一个循环的,但许多人似乎并不知道。你知道如何解决吗?另外,如果您不介意,我在 get 方法方面需要帮助,我在另一个问题上有帮助,它与相同的代码相关。
标签: java nodes doubly-linked-list