そのノードへのポインタのみを指定して、リンクリストの最後のノードを削除しようとしています。
以下の実装を書きましたが、動作しません。
私はすでにこの主題に関するSOの質問の大部分を訪れましたが、そのノードへのポインタが1つしかない場合、リンクされたリストの最後のノードを削除する方法を示しているものはありませんか?
ここに何か欠けていますか?
class Node {
Node next;
int value;
Node(int val) {
this.value = val;
this.next = null;
}
@Override
public String toString() {
Node cur = this;
String str = "";
while(cur != null) {
str += cur.value+"->";
cur = cur.next;
}
return str;
}
}
class DeleteNodeLL {
public static void deleteNode(Node current) {
Node temp;
if(current.next == null) {
current = null;
return;
} else {
current.value = current.next.value;
temp = current.next;
temp = null;
current.next = current.next.next;
}
}
public static void main(String [] args) {
Node n1 = new Node(25);
Node n2 = new Node(1);
Node n3 = new Node(36);
Node n4 = new Node(9);
Node n5 = new Node(14);
n1.next = n2;
n2.next = n3;
n3.next = n4;
n4.next = n5;
n5.next = null;
System.out.println("Original linkedlist :");
System.out.println(n1);
System.out.println();
System.out.println("After deleting a node :");
deleteNode(n5);
System.out.println(n1);
}
}
出力:-
元のリンクリスト:
25->1->36->9->14->ノード削除後:
25→1→36→9→14→