で削除機能を実装しようとしています
public static boolean delete(Object d, ListElement head){
ListElement p=find(d,head);
if(p.data==null){return false;}
else {
System.out.println("Delete Successfully!");
if(head.data==d){head=head.next;}
else{
while(head.next.data!=d){
head=head.next;
}
head.next=head.next.next;}
return true;}
}
この関数は基本的に、要素d
がリストにあるかどうかをチェックします。not->return false;
-それ以外の場合は、要素がリストの最初の要素であるかどうかを確認します。そうでない場合true
は、ヘッドをそのに変更しますnext
。
-それ以外の場合は、その前のリスト要素に移動します。
問題は、削除する要素がブール値などの最初の要素である場合です。「 」を使用して新しい値をヘッドに割り当てるs=ListElement.delete(1,d);
ことはできません。しかし、Javaは参照によって渡されますが、なぜそれを変更できないのですか?head=head.next;
//実際、私の質問は、関数内で関数に渡される参照を次のように変更できるかどうかです。
void fun(dog a){
a=new dog("Po");
}
main()
{dog b=new dog("Jo");fun(b);}
// bは変更されますか?