我正在尝试在
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
是否在列表中,-ifnot->return false;
-else 检查该元素是否是列表的第一个元素,如果true
,将头部更改为其next
,
-else 遍历它前面的列表元素。
问题是要删除的元素是第一个元素,例如布尔值,s=ListElement.delete(1,d);
我不能使用“ head=head.next;
”为头部分配新值。但是java是通过引用传递的,为什么我不能改变呢?
//实际上我发现我的问题是我们是否可以在函数内部更改传递给函数的引用,例如:
void fun(dog a){
a=new dog("Po");
}
main()
{dog b=new dog("Jo");fun(b);}
//所以b会改变吗?