class StackNode{
int data;
StackNode next;
public StackNode(int data, StackNode next){
this.data = data;
this.next = next;
}
}
public class StackWithLinkedList {
StackNode root = null;
public void push(int data){
if(root == null)
root = new StackNode(data, null);
else {
StackNode temp = root;
while(temp.next != null)
temp = temp.next;
temp.next = new StackNode(data, null);
}
}
public int pop() throws Exception{
if(root == null)
throw new Exception("No Elements in Stack");
else {
StackNode temp = root;
while(temp.next != null)
temp = temp.next;
int data = temp.data;
temp = null;
return data;
}
}
public void print(){
StackNode temp = root;
while(temp!= null){
System.out.print(temp.data +" ");
temp = temp.next;
}
System.out.print("\n");
}
public static void main(String[] args) {
StackWithLinkedList stack = new StackWithLinkedList();
for(int i = 1; i<=15; i++){
Random randomGen = new Random();
stack.push(randomGen.nextInt(i));
}
stack.print();
System.out.print("\n");
try {
System.out.println("Deleted: "+stack.pop());
System.out.println("Deleted: "+stack.pop());
} catch (Exception e) {
e.printStackTrace();
}
stack.print();
}
}
Я пытаюсь реализовать Stack with Linkedlist. В поп-функции я прохожу до последнего узла и делаю его нулевым. Когда я распечатаю список. он остается неизменным. Применяет ли root к temp и обходит с ним проблему?Удалить узел из связанного списка
Вы должны установить поле рядом с нулем элемента до последнего. Не элемент – Damian0o
Но я сделал этот элемент сам по себе как null. Разве это не освободит память? –
Вы не должны интересоваться свободной памятью, так как GC позаботится об этом. Вы можете удалить ссылку на этот элемент из списка – Damian0o