2017-01-30 8 views
0

Nodeクラスを実装する必要があります。基本クラスはgetItem()、getNext()、setItem()、setNext()です。私はノードがJavaの "アイテム"として少なくともデフォルトの整数の範囲を格納できるようにしたい。 "next"は、リンクされたリスト内の次のNodeへの参照またはポインタ、またはリスト内の最後のノードの場合は特別なNode NILです。また、指定されたインスタンスを初期化する2引数のコンストラクタを実装したい(最初の引数)と次のノード(2番目の引数)の間に、私はレンガの壁にぶつかり、これを実装するためのガイダンスが必要です。Nodeクラス(java)の作成に関するガイダンスが必要ですか?

私はこれまでのところ、これを持っている:

class Node { 


public Node(Object o, Node n) { 

} 
public static final Node NIL = new Node(Node.NIL, Node.NIL); 

public Object getItem() { 
    return null; 
} 
public Node getNext() { 
    return null; 
} 
public void setItem(Object o) { 

} 
public void setNext(Node n) { 

} 
} 
+1

あなたはこの1つを見てすることがあります:http://stackoverflow.com/questions/31544501/creating-a-node-class-in-java –

答えて

0

私はあなたにそれを行う方法についての迅速なヒントを与えることができます。

Class Node{ 

    //these are private class attributes, you need getter and setter to alter them. 
    private int item; 
    private Node nextNode; 

    //this is a constructor with a parameter 
    public Node(int item) 
    { 
     this.item = item; 
     this.nextNode = null; 
    } 

    // a setter for your item 
    public void setItem(int newItem) 
    { 
     this.item = newItem; 
    } 

    // this is a getter for your item 
    public int getItem() 
    { 
     return this.item; 
    } 

} 

あなたが呼び出すことによって、Nodeオブジェクトを作成することができます。

Node newNode = Node(2); 

これはあなたの問題の完全な解決策ではありません.2つのパラメータコンストラクタと最後のノードリンクはありませんが、このshouあなたを正しい方向に導きます。

0

以下は、Node実装の簡単な例です(わかりやすくするため、Item to Valueという名前に変更しました)。メソッドシグネチャはあなたに課されるように見えるので、これは何とかこのように実装する必要があります。しかし、これはLinkedListを実装する最良の方法ではないことに注意してください。

public class Node { 
    public static final Node NIL = null; 
    private Integer value; 
    private Integer next; 

    public Node(Integer value, Node next) { 
     this.value = value; 
     this.next = next; 
    } 

    public Integer getValue() { 
     return this.value; 
    } 
    public Node getNext() { 
     return this.next; 
    } 

    public void setValue(Integer value) { 
     this.value = value; 
    } 

    public void setNext(Node next) { 
     this.next = next; 
    } 

    public boolean isLastNode() { 
     return this.next == Node.NIL || Node; 
    } 
} 


public class App { 
    public static void main(String[] args) { 
     Node lastNode = new Node(92, Node.NIL); 
     Node secondNode = new Node(64, lastNode); 
     Node firstNode = new Node(42, secondNode); 

     Node iterator = firstNode; 
     do() { 
      System.out.println("node value : " + iterator.getValue()); 
      iterator = iterator.getNext(); 
     } while (iterator == null || !iterator.isLastNode()); 
    } 
} 
+0

は 'Node.NIL'ですオブジェクトであり、メソッド呼び出しではありません。したがって、スタックオーバーフローは発生しません。 –

+0

@ ChaiT.Rexはいそれは 'ノードNIL =新しいノード(Node.NIL、Node.NIL)'です。近くに見ると、コンストラクタ自体が呼び出されます。正しく構築するために、 'Node.NIL'は' Node.NIL'を必要としました。そして、スタックオーバーフローが発生します。 –

+0

私は実際にコードを実行しました。スタックのオーバーフローは発生しません。推測よりもむしろコードを実行するべきでしょう。 –

0

カスタムのLinkedList/Treeを実装する際に、Nodeが必要です。 NodeとLinkedListの作成のデモです。私はすべての論理に入れていない。ちょうど基本的なスケルトンがここにあり、あなたは自分自身でもっと多くを加えることができます。

enter image description here

+1

コードにスクリーンショットを使用しないでください。代わりに、答えにコードを貼り付けてそれを選択し、エディタの '{}'ボタンを押します。 –

+0

@ ChaiT.Rex情報ありがとうございます:)私は次回からこれを世話します。 –

関連する問題