В C эта концепция прекрасно проясняется с помощью указателей, но у меня возникают проблемы с пониманием того, что именно здесь происходит в Java.
Может кто-нибудь объяснить мне, как получилось, когда я перебираю список в removeNode (),он ничего не меняет в исходном объекте, НО, когда я делаю front.next = front.next.next, он фактически изменяет объект.Это сводит меня с ума, потому что в C я могу просто использовать указатели для редактирования с желанием.Что именно здесь происходит со ссылками?
Примечание: я знаю, что этот код не обрабатывает крайние случаи.как нулевые узлы и т.д ...
public class LLnode{
int value;
LLnode next;
public LLnode(int x){
this.value = x;
this.next = NULL;
}
}
/*
* This fn removes the node with the specified value n from the linked list
*/
public void removeNode(LLnode head, int n){
LLnode front = head;
while (front.next.value != n){
front = front.next; //why DOESN'T this physically change the LL?
}
front.next = front.next.next; //why DOES this physically change the LL ?
}
public static void main(String[] args){
//node creation
LLnode a = new LLnode(10);
LLnode b = new LLnode(20);
LLnode c = new LLnode(30);
LLnode d = new LLnode(40);
//assignments
c.next = d;
b.next = c;
a.next = b;
removeNode(a,30);
}
Спасибо.