我对在Java中创建DLList感到困惑。我的指示说我的DLLNode类应该有指向前一个和下一个节点的链接。我需要在数据部分下创建它还是一个方法?
感谢您的时间
答案 0 :(得分:3)
您可以这样开始声明DDList
:
public class DLList {
private static class Node {
int data;
Node previous;
Node next;
Node(int d) {
data = d;
}
}
private Node head;
private Node tail;
// ...
}
一些亮点:
Node
类是DDList
的内部类,因此是成员。因此,它与其他成员在同一部分中声明,例如领域。这就是你所说的"数据部分"我相信。head
之前声明tail
和Node
。Node
没有对DDList
的引用。这样每Node
只保存(仅)4个字节,但如果您将未链接的Nodes
传递到DDList
之外,则可以避免内存泄漏。它也是更好的风格ihmo。Node
在DLList
之外不可见。由于您需要访问一个类来访问其字段,这类似于将Node
的字段设置为私有字段。但它更有效,因为如果您访问Node
中的DLList
字段,编译器就不必生成合成方法。data
设为最终版,因此无法更改。DDList
设为通用。一个很酷的练习留给读者:-) 答案 1 :(得分:0)
这是一个简单的DLL Node类,我在过去几个学期的多个项目中一直使用它。
我警告你,只是复制代码可能违反你所在机构的荣誉代码。
private class Node {
public Node prev, next;
int digit;
// initializes the new node's values
public Node(Node prev, int digit) {
this.prev = prev;
this.digit = digit;
this.next = null;
}
}
当您需要添加节点时,您只需要记住链接之前的节点' next'字段到新节点。
答案 2 :(得分:0)
实际上,你只需要创建两个引用它们的引用,并在下一个和前一个引用它们。例如:
private class Node {
int data; // assuming the data is an integer
Node next; // this is the next reference.
Node previous; // this is the previous reference
Node(int data) {
this.data = data;
}
}