我在 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 循环迭代就能达到同样的效果吗?