我正在面對java中引用的概念性問題。這是我實現的一個基本LinkedList
:在Java中引用的概念性問題
節點:
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循環的一次迭代實現相同的效果?
請在發佈之前先格式化您的代碼。像這樣閱讀是非常困難的。你可以編輯你的問題。 – jlordo