Javaでの参照に関する概念的な問題に直面しています。これは私の基本的な実装ですLinkedList
:
ノード:
class Node {
int data;
Node next = null;
public Node(int data) {
this.data = data;
}
}
リスト:
class LinkedList {
Node n = null;
Node start = null;
int flag = 0;
void insertion(int x) {
if(flag==0)
{
Node newnode = new Node(x);
n = newnode;
start = newnode;
flag = 1;
return;
}
Node newnode = new Node(x);
n.next = newnode;
n = n.next;
}
void deletion() {
Node str = start;
while(str.next.next != null)
str = str.next;
str.next = null;
}
void printlist() {
Node str = start;
while(str != null) {
System.out.println(str.data);
str = str.next;
}
}
}
テストクラス:
public class Test31 {
public static void main(String[] args){
LinkedList ll = new LinkedList();
ll.insertion(5);
ll.insertion(15);
ll.insertion(25);
ll.insertion(35);
ll.insertion(45);
ll.insertion(55);
ll.deletion();ll.deletion();
ll.printlist();
}
}
上記のプログラムは問題なく完全に正常に動作しますが、deletion()
このコードに置き換えると次のようになります。
void deletion() {
Node str = start;
while(str.next != null)
str = str.next;
str = null;
}
その後、要素の削除は行われません。なぜこれが起こっているのかを知りたいです。トリックを使用str.next.next
しますが、上記の削除方法を使用した場合、whileループをもう1回繰り返すだけでも同じ効果が得られるはずではありませんか?