2017-12-06 7 views
0

を使用してリンクリストを実装します。しかし、私はこれは、リンクされたリストとみなされることになる要素の後に配列の要素を挿入し、また、1は、私は基本構造として配列を使用してJavaでリンクリストを実装しようとしています配列

class linkedList{ 
    char data[]; 
    int next; 
    //constructor 
    public linkedList(int MAX){ 
     data = new char[MAX]; 
    } 

    public void insertFirst(char d){ 
     if(data[next]==0){ 
     data[next] = d; 
     next++; 
     } 
     else{ 
      System.out.println("list is full"); 
     } 
    } 




    public void insertAfter (char after ,char value){ 
     next=0; 
     while(data[next] !=after){ 
      next++; 
     } 
     char temp = data[next+1]; 
     data[next+1] = value; 

    } 

    public void printList(){ 
     for(int i=0;i<data.length;i++){ 
      System.out.print(data[i]); 
     } 
    } 
} 





public class myLinkedList { 

    public static void main(String args[]) { 
     linkedList list = new linkedList(9); 
     list.insertFirst('T'); 
     list.insertFirst('H'); 
     list.insertFirst('L'); 
     list.insertAfter('H', 'z'); 
     list.printList(); 
    } 

} 

によって配列をシフトダウンを行う方法がわからないのですか?

+0

実際にリンクリストを作成しますか?なぜArrayListを使用しないのですか? –

+0

これは割り当てです –

+0

insertAt()メソッドがどのように機能するかの例を見たいですか? – prsvr

答えて

0

これはリンクされたリストではありません。あなたが持っているものは、配列が基礎となるデータ構造として使われるという点で、ArrayListに似ています。リンクされたリストは一連のノードで構成され、各ノードは次のノードにリンクされています。リンクされたリストは、ターゲットまたはリストの終わりに達するまで現在のノードでnode.next()のようなものを呼び出すことによってトラバースされます。

サイズ制限に達した後にリスト構造に別の要素を挿入する場合は、新しい配列を作成し、古い配列の内容をコピーして新しい要素を配列に挿入する必要があります。 System.arraycopy()を使用して、アレイ内のアイテムのコピーまたはシフトを実行できます。

+0

配列を使用してリンクリストを作成するにはどうすればよいですか? –

+0

2つの配列を次の[]要素に、もう1つをdata [] –

+0

に使用するdata []配列と次のノードへの参照を含むノードクラスを作成する必要があります。リストをトラバースして新しいノードを最後に設定するか、新しいノードの次のフィールドを現在のヘッドに設定し、新しいノードを新しいノードに設定することによって、新しいノードを追加します。この場合、data []配列は、ノード自体のデータではなく、ノード内のデータの格納にのみ使用されます。 – jonbush

関連する問題