双链表Java

时间:2016-11-05 23:39:17

标签: java

我对在Java中创建DLList感到困惑。我的指示说我的DLLNode类应该有指向前一个和下一个节点的链接。我需要在数据部分下创建它还是一个方法?

感谢您的时间

3 个答案:

答案 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之前声明tailNode
  • 感谢静态,Node没有对DDList的引用。这样每Node只保存(仅)4个字节,但如果您将未链接的Nodes传递到DDList之外,则可以避免内存泄漏。它也是更好的风格ihmo。
  • 感谢私有,NodeDLList之外不可见。由于您需要访问一个类来访问其字段,这类似于将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;
   }
}