2017-04-04 6 views
-5

のLinkedListの文字を表現するコードの例:LinkedListを理解するには?

public class SimpleLinkedListTest { 
    private class Node{ 
     public Node(Object o) { 
      this.o = o; 
     } 
     Object o; 
     Node next; 
    } 

    private Node first; 

    public void add(Object elem){ 
     Node node = new Node(elem); 
     if (first == null) { 
      first = node; 
     } else { 
      append(node); 
     } 
    } 

    private void append(Node node){ 
     Node last = first; 
     while(last.next != null){ 
      last = last.next; 
     } 
     last.next = node; 
    } 
} 

インスタンスは、私はそれで「APPEND」方法を理解することができますどのように新しいオブジェクトをカプセル化する「チェーン特性」、そして、何正確 あるについて説明? 「カプセル化プロセス」LinkedListタイプが実行されますか?

+0

リンクリストについては、Wikipediaの記事を読んでください。 – GhostCat

答えて

3

LinkedListには、最初と最後の2つのポインタがあります。あなたはそれが最後のノードを取り、新しいノードにリンクするために、その次の参照を使用して、リストの末尾に新しい要素を追加したときに今

private static class Node<E> { 
     E item; 
     Node<E> next; 
     Node<E> prev; 

     Node(Node<E> prev, E element, Node<E> next) { 
      this.item = element; 
      this.next = next; 
      this.prev = prev; 
     } 
    } 

public class LinkedList<E> 
    extends AbstractSequentialList<E> 
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable 
{ 
    transient int size = 0; 

    transient Node<E> first; 

    transient Node<E> last; 

とノードクラスは、次および前の二つのポインタを持っていますあなたがリストの先頭に要素を追加しますが、今回はそれがNode firstポインタに行くとき

void linkLast(E e) { 
     final Node<E> l = last; 
     final Node<E> newNode = new Node<>(l, e, null); 
     last = newNode; 
     if (l == null) 
      first = newNode; 
     else 
      l.next = newNode; 
     size++; 
     modCount++; 
    } 

同じことが起こります:それはあなたの要素が含まれています。

要素を削除する場合は、ポインタにNodeクラスのnullを割り当てます。

関連する問題