宿題については、ノードとポインタを使用して循環リンクリストを作成することになっています。
これは私がリストの先頭に文字列(名前)を挿入して、トラバースメソッドを使用して、それらをプリントアウトしようとしていますJavaの二重循環リンクリストへの挿入
class Node implements Serializable {
public String theName; //the wrapped name
public Node next; //the next node in the sequence
public Node prev; //the previous node in the sequence
public Node(Node p, String s, Node n){
prev = p;
theName = s;
next = n;
}
}
私のノードクラスです。
は、これまでのところ、これらは、私はそれが最初に戻って取得するときに私のトラバース方法は、それを停止する私の連続ループと私が作る方法を把握する必要がありますことを理解し
public class ListImpl /*implements List*/ {
Node list;
public ListImpl() {
list = new Node(list, null, list);
}
public void insert(String s) {
if (list == null) {
list = new Node(list, s, list);
} else {
list = new Node(list.prev, s, list);
list.next.prev = list;
list.next.next = list;
}
}
public void traverse(ASCIIDisplayer out) {
Node p = new Node(null, null, null);
p = list;
if (list != null) {
while(true) {
out.writeString(p.theName);
p = p.next;
}
} else {
throw new EmptyListException();
}
}
}
...私のトラバースし、挿入する方法ですそれは私の問題ではありません。私が手
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ASCIIDisplayer a = new ASCIIDisplayer();
ListImpl List;
List = new ListImpl();
List.insert("Steve");
List.insert("Kuba");
List.insert("Taylor");
List.insert("Jane");
List.traverse(a);
}
}
出力は次のとおりです:テイラージェーン・テイラージェーン・テイラージェーン・テイラージェーン
は、私は(メイン)このコードを実行すると、私の出力が期待されていないようので、私の問題は、insertメソッドであると考えています。 ..繰り返される。
私は次のような出力を期待していました:Steve Kuba Taylor Jane Steve Kuba Taylor Jane ...繰り返しました。
これは、問題が挿入メソッドにあると考えているため、ポインタが間違ったノードを指している必要がありますが、私が間違ったことを理解できません。
申し訳ありませんが長い質問のために、うまくいけば私を助けるための十分な情報があります! ありがとうございます!あなたのinsertメソッドで問題がなければならないの
これはところで – Argote
はい、私が指定するのを忘れて二重にリンクされたリストのように見えます、はい、私は私が間違って何をしたか見...しかし、私はその行 – Cheesegraterr