簡単な単方向連結リストの実装をしてみたのですが、toStringメソッドがうまく書けないで、困っています。
どのように記述するのがベストだと思われますか?
Java
1public class Node { 2 Node next = null; 3 int data ; 4 5 public Node(int d) { 6 this.data = d; 7 } 8 9 @Override 10 public String toString() { 11 StringBuffer sb = new StringBuffer(); 12 try{ 13 while(next != null) { 14 sb.append(data); 15 next = next.next; 16 data = next.data; 17 sb.append("->"); 18 } 19 } catch (NullPointerException e) { 20 return sb.toString(); 21 } 22 return sb.toString(); 23 } 24 25 26 27 void appendToTail(int d) { 28 Node end = new Node(d); 29 Node n = this; 30 while (n.next != null) { 31 n = n.next; 32 } 33 n.next = end; 34 }
ちなみに下記のような使い方をします。
Java
1public static void main(String[] args) { 2 Node list1 = new Node(7); 3 list1.appendToTail(1); 4 list1.appendToTail(6); 5 System.out.println(list1); 6}
この実行結果は
7->6
のようになります。
私としては
7->1->6
となるのを期待しているのですが、toString文のwhile文の中でnext.nextとしているため、このような結果になってしまいます。
しかし、どのような方法が良いのでしょうか?
thisも使えないし、インスタンスを使うのも変だし、困っています。
お分かりの方、回答お願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/08/26 00:24
2016/08/26 00:26 編集
退会済みユーザー
2016/08/26 00:32
2016/08/26 00:41
退会済みユーザー
2016/08/26 01:07
2016/08/26 03:03
退会済みユーザー
2016/08/26 06:07
2016/08/26 06:52
退会済みユーザー
2016/08/26 07:17