2016-07-09 12 views
-3

私はデータ構造体が初めてです。私はデータ構造を学ぶのは非常に興味がありますが、私はそれについて健康なチュートリアルを見つけませんでしたので、誰かが私を助けてくれると思ってここに投稿しています。私はリンクリストの理論を知っていますが、実装中は完全に空白です。誰かが私にそれがどのように機能するのかを理解させることができるなら、リンクされたリストをどのようにトラバースするか、挿入して削除するかのように、私に理解しやすいように実行コードを提供してください。 私は、この質問を重複してこれを棄却すると思う多くの人々がいることを知っています。あなたが間違いを見つけ出すのではなく、本当に役立つ良い解決策を私に提供してください。ありがとう。JavaのLinkedListデータ構造におけるトラバース、挿入、削除

+0

私の友人には大きな質問です。がんばろう。 –

+1

'java.util.LinkedList'を見てください。おそらくいくつかのオーバーヘッドはありません。しかし、これはあなたにいくつかのポイントを開始する必要があります。 – dpr

答えて

0

シンプルな実装。非効率性があります、彼らはあなたが理解できるようになっています:)それをより良くする方法を見ていくためにいくつかの研究を行ってください。

public class LinkedList { 
    public static class Node { 
     private Object data; 
     private Node next = null; 

     public Node(Object data) { 
      this.data = data; 
     } 

     public void setNext(Node n) { 
      next = n; 
     } 

     public Node getNext() { 
      return next; 
     } 

     public Object getData() { 
      return data; 
     } 
    } 

    public static void iterate(Node n) { 
     while (n != null) { 
      System.out.println(n.getData()); 
      n = n.getNext(); 
     } 
    } 

    public static void insert(Node newNode, Node after) { 
     newNode.setNext(after.getNext()); 
     after.setNext(newNode); 
    } 

    public static void delete(Node toDelete, Node root) { 
     Node n = root; 
     while (n.getNext() != toDelete) { 
      n = n.getNext(); 
     } 
     n.setNext(toDelete.getNext()); 
    } 

    public static void main(String[] args) { 
     Node a = new Node("a"); 
     Node b = new Node("b"); 
     Node c = new Node("c"); 

     // append 
     a.setNext(b); 
     b.setNext(c); 

     // iterate 
     System.out.println("Initial list"); 
     iterate(a); 

     // insert d after b 
     Node d = new Node("d"); 
     insert(d, b); 

     // iterate again 
     System.out.println("After insert"); 
     iterate(a); 

     // delete d 
     delete(d, a); 

     // iterate again 
     System.out.println("After delete"); 
     iterate(a); 
    } 
} 
+0

ありがとう非常にバディ@adamreeve、それは私の多くを助けた。 :) – Vivek

0

あなたがYouTubeにアクセスしてDerek Banasを検索すると、LinkedListsの素晴らしいビデオとその実装方法を見つけることができます。彼は一種のスピードを話しますが、内容は私の意見で非常によく教えられています。彼のビデオに続いて、ビデオの後で私はあなたがより良い理解を持っていると思う。アペンド、挿入、削除、および反復処理を示すリンクリストの

https://www.youtube.com/watch?v=195KUinjBpU

関連する問題