2017-07-29 3 views
0

私は現在、二重リンクリストの作成に取り組んでいますが、コンストラクタが前の要素と次の要素を必要とするため、私はそうするのが苦労しています。ただし、リストをチェックすると、頭と尾の2つのヌル要素が返されます。ノードのコンストラクタはある二重リンクリストを初期化し、最初の要素をjavaに追加するにはどうすればよいですか?

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

あるという理由I私はそれをコンストラクタに渡すとtail == nullが返されるため、nullが返されます。しかし、新しいノードを作成する前にtailの値を更新する方法はわかりません。

public DoublyLinkedList() { 
    head = tail = null; 
    head.prev = null; 
    head.next = tail; 
    tail.next = null; 
    tail.prev = head; 
} 

でも、空のリストを作成しようとしましたが、要素が追加されているとして表示されていません。ただ、スタートのために :

+0

「機能していない」という意味を明確に定義していないと、私たちはあなたを助けません。 –

+0

@JoeC私は実際にリストをチェックしようとすると、私はちょうどヌル要素、頭と尾を取得するポストに入れました。私は明確にするために編集しました。 –

+0

デバッガの使い方を学ぶ必要があるようです。 [補完的なデバッグ手法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)にご協力ください。その後も問題が残っている場合は、より具体的な質問に戻ってください。 –

答えて

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

私は家にいないので、私は携帯電話でこれを作った。申し訳ありませんが、より多くの助けをしていない – BlazeChill

+0

リストは私が使用したいものです。通常私はC言語でそれをする – BlazeChill

関連する問題