如何初始化双链表,然后在java中添加第一个元素?

时间:2017-07-29 20:23:16

标签: java nodes doubly-linked-list

我目前正在创建一个双向链表,但我很难这样做,因为构造函数需要前一个元素和下一个元素。但是,检查列表只会产生两个空元素,即头部和尾部。节点的构造函数是

    public Node(Node prev, Node next, String link) {
        this.prev = prev;
        this.next = next;
        this.link = link;
    }

我所拥有的空列表的构造函数是

public DoublyLinkedList() {
    head = tail = null;
}

我添加元素的代码是

public void addElement(String link) {
    Node n = new Node(tail.prev, tail, link);
    if (head == null) {
        head = n;
        head.next = n;
    }
    tail.prev = n;
    tail = n;
}

我知道我导致null的原因是因为当我将它传递给构造函数时,tail == null。但是,我不知道在创建新节点之前如何更新tai​​l的值。我尝试使用

构建空列表
public DoublyLinkedList() {
    head = tail = null;
    head.prev = null;
    head.next = tail;
    tail.next = null;
    tail.prev = head;
}

但是,这并没有显示元素被添加。

2 个答案:

答案 0 :(得分:0)

我将假设addElement在列表末尾添加一个元素 如果是这种情况,请尝试改为

Node n = new Node(tail, null, link); // The new tail
if (head == null) {
    head = n;
    tail = n;
}else{
    tail.next = n;
    tail = n;
}

答案 1 :(得分:0)

为此你可以创建一个这样的类: 刚开始。

public class DLinkedList{
  private node pHead;
  private node pTail;

  public DLinkedList()
  {
      this.pHead=null;
      this.pTail=null;
  }

   public insert(String newLink)
   {
       node newNode = new node():
       newNode.link = newLink;
       if(pHead==null)
       {
          pHead=newNode;
          pTail=pHead;
      }
      else
      {
          newNode.prev=pTail;
          pTail.next=newNode;
          pTail= pTail.next;
       }
   }
}