1

リンクリストクラスであるノードクラスを作成しました。このリストの要素を出力する方法はありますか? メソッドを作成しましたprint()が、最初の要素である 21 しか返されません。そのリストを反復処理するにはどうすればよいですか?

public class ListNode {
    private int item;
    private ListNode next;

    public ListNode(int item, ListNode next){
        this.item = item;
        this.next = next;
    }

    public ListNode(int item){
        this(item, null);
    }

    public int print(){
        return item;
    }

    public static void main(String[] args) {            
        ListNode list = new ListNode(21, new ListNode(5, new ListNode(19, null)));
        System.out.println(list.print());
    }

}

4

6 に答える 6

4
public String toString() {
    String result = item + " ";
    if (next != null) {
        result += next.toString();
    }
    return result;
}

そして、あなたは簡単に行うことができます

System.out.println(list.toString());

(関数の名前を から に変更して、その機能をprintよりtoString正確に説明しました)

于 2013-05-15T12:34:43.683 に答える
1

現在の実装は何も出力しません。単に item を返します。より適切な実装は次のようになります。

public void print() {
    System.out.println(item); 
}

その後、再帰を使用してすべてのアイテムを出力できます。

public void printAll() {
    print();
    if (next != null) {
        System.out.println("; ");
        next.printAll(); 
    }
}
于 2013-05-15T12:36:44.923 に答える
0

を作成することを検討してくださいprintall

public void printAll(){
    System.out.println(item);
    if (next != null){
        next.printAll();
    }
}
于 2013-05-15T12:34:26.067 に答える
0

関数print()は単一のアイテムのみを返すため、21 のみを出力しています。

まで再帰的に呼び出して、すべての値を出力します。next != NULL

于 2013-05-15T12:36:53.957 に答える
0

呼び出すlist.print()と、ヘッドの値 (21) のみが返されます。次のノードへの参照や呼び出しは行われません: next.

個人的には、print() メソッドを削除し、代わりに toString() をオーバーライドします。

@override
public String toString(){
    return item + "\n" + next;
}

おそらく null テールを出力したくないと思うので、これはおそらくより良いです:

@override
public String toString(){
    if(next) {
        return item + "\n" + next;
    } else {
        return item + "\n";
    }
}

次に、メイン:

public static void main(String[] args) {            
    ListNode list = new ListNode(21, new ListNode(5, new ListNode(19, null)));
    System.out.println(list);
}
于 2013-05-15T12:39:27.030 に答える