この質問では、LList クラスのメソッドを作成する必要があります。リストが既に並べ替えられていると仮定して、正しい位置に新しいノードを追加します。私が扱っているリストはキューです。
ここに私の LNode クラスがあります:
class LNode{
private int val;
private LNode next;
private LNode prev;
public LNode(int v, LNode n, LNode p){
next = n;
prev = p;
val = v;
}
public int getVal(){
return val;
}
public LNode getNext(){
return next;
}
public LNode getPrev(){
return prev;
}
public void setVal(int v){
val = v;
}
public void setNext(LNode n){
next = n;
}
public void setPrev(LNode p){
prev = p;
}
}
ここに私の LTest クラスがあります:
public class LTest{
public static void main(String[]args){
LList nums = new LList();
nums.enqueue(55);
nums.enqueue(20);
nums.enqueue(13);
nums.enqueue(11);
nums.sortedInsert(15);
nums.display();
}
}
LList クラスで試したことは次のとおりです。
public void sortedInsert(int v){
LNode tmp = head;
while(v<tmp.getVal()){
tmp = tmp.getNext();
}
tmp.setNext(tmp.getPrev().getNext());//tmp's next is now the original LNode
tmp.getPrev().getNext().setPrev(tmp);//the original LNode's previous is now tmp
tmp.getPrev().setNext(tmp);//tmp's previous LNode's next is now tmp
tmp.setVal(v);
}
それは機能しません。出力は 55,20、次に永遠に 15 になり、Java がクラッシュします。tmp LNode がそれ自体を指しているためだと思いますが、私のコードはそれを行っていません。誰が何が悪いのか教えてもらえますか?ありがとうございました。