Я столкнулся с концептуальной проблемой со ссылками в 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