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();
}
}
LinkedListでスタックを実装しようとしています。ポップ関数では、最後のノードまで移動してnullにしています。私はリストを印刷します。それは変わらないままです。 tempにルートを割り当て、それをトラバースしても何の問題もありませんか?リンクリストからノードを削除する
あなたは最後のものの前に次の要素のnullにフィールドを設定する必要があります。要素ではない – Damian0o
しかし、私はその要素自体をnullにしました。メモリを解放しないでください? –
GCはそれを処理するので、空きメモリには関心がありません。リストからその要素への参照を削除する必要があります – Damian0o