Javaでリンクリストから最後のノードを削除する方法


  1. 単方向リンクリストの場合:

    • 最後のノードの前のノードを見つける必要があります。これには、ループを使用します。
    • ループ内で、最後のノードの前のノードを見つけ、そのノードの次のポインタをnullに設定します。
    public void removeLastNode(LinkedListNode head) {
       if (head == null || head.next == null) {
           // リストが空または1つのノードしかない場合
           head = null;
           return;
       }
    
       LinkedListNode secondLast = head;
       while (secondLast.next.next != null) {
           secondLast = secondLast.next;
       }
    // 最後のノードの前のノードの次のポインタをnullに設定する
       secondLast.next = null;
    }
  2. 双方向リンクリストの場合:

    • 最後のノードの前のノードを見つける必要があります。
    • ループ内で、最後のノードの前のノードを見つけ、そのノードの次のポインタをnullに設定します。同時に、最後のノードの前のノードの前のポインタを最後のノードの前のノードの次のポインタに設定します。
    public void removeLastNode(DoublyLinkedListNode head) {
       if (head == null || head.next == null) {
           // リストが空または1つのノードしかない場合
           head = null;
           return;
       }
    
       DoublyLinkedListNode secondLast = head;
       while (secondLast.next.next != null) {
           secondLast = secondLast.next;
       }
    // 最後のノードの前のノードの次のポインタをnullに設定する
       secondLast.next = null;
       // 最後のノードの前のノードの前のポインタを最後のノードの前のノードの次のポインタに設定する
       secondLast.prev.next = secondLast.next;
    }

これらは一部の方法ですが、リンクリストから最後のノードを削除するための基本的なアプローチです。必要に応じてコードを調整して使用してください。