-
単方向リンクリストの場合:
- 最後のノードの前のノードを見つける必要があります。これには、ループを使用します。
- ループ内で、最後のノードの前のノードを見つけ、そのノードの次のポインタを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; }
-
双方向リンクリストの場合:
- 最後のノードの前のノードを見つける必要があります。
- ループ内で、最後のノードの前のノードを見つけ、そのノードの次のポインタを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; }
これらは一部の方法ですが、リンクリストから最後のノードを削除するための基本的なアプローチです。必要に応じてコードを調整して使用してください。