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();
}
}
Ich versuche, Stack mit Linkedlist zu implementieren. In der pop-Funktion traversiere ich bis zum letzten Knoten und mache ihn null. Wenn ich die Liste drucke. es bleibt unverändert. Verursacht das Zuweisen von root zu temp und das Traversieren damit irgendein Problem?Löschen eines Knotens aus einer verknüpften Liste
Sie sollten Feld neben null des Elements vor dem letzten eins gesetzt. Nicht das Element – Damian0o
Aber ich machte dieses Element selbst als null. Wont das die Erinnerung frei? –
Sie sollten sich nicht für freien Speicher interessieren, da GC sich darum kümmern wird. Sie sollten den Verweis auf dieses Element aus der Liste entfernen – Damian0o