リンクリストへのノード挿入方法の解説


  1. リンクリストの先頭にノードを挿入する方法:

    • 新しいノードを作成し、データを設定します。
    • 新しいノードの次のポインタを、既存のリンクリストの先頭ノードに設定します。
    • リンクリストの先頭ポインタを、新しいノードに更新します。

    以下は、C言語での例です:

    struct Node {
       int data;
       struct Node* next;
    };
    void insertAtBeginning(struct Node head, int newData) {
       struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
       newNode->data = newData;
       newNode->next = *head;
       *head = newNode;
    }
  2. リンクリストの末尾にノードを挿入する方法:

    • 新しいノードを作成し、データを設定します。
    • 新しいノードの次のポインタをNULLに設定します。
    • リンクリストの最後のノードの次のポインタを新しいノードに設定します。

    以下は、C++での例です:

    struct Node {
       int data;
       struct Node* next;
    };
    void insertAtEnd(struct Node head, int newData) {
       struct Node* newNode = new Node();
       newNode->data = newData;
       newNode->next = NULL;
       if (*head == NULL) {
           *head = newNode;
       } else {
           struct Node* lastNode = *head;
           while (lastNode->next != NULL) {
               lastNode = lastNode->next;
           }
           lastNode->next = newNode;
       }
    }
  3. リンクリストの指定位置にノードを挿入する方法:

    • 新しいノードを作成し、データを設定します。
    • 指定した位置の前後のノードを特定します。
    • 前のノードの次のポインタを新しいノードに設定し、新しいノードの次のポインタを後のノードに設定します。

    以下は、Pythonでの例です:

    class Node:
       def __init__(self, data=None):
           self.data = data
           self.next = None
    def insertAtPosition(head, position, newData):
       newNode = Node(newData)
       if position == 1:
           newNode.next = head
           return newNode
       currentNode = head
       currentPosition = 1
       while currentPosition < position - 1 and currentNode.next:
           currentNode = currentNode.next
           currentPosition += 1
       if currentPosition < position - 1:
           print("指定した位置が存在しません")
           return head
       newNode.next = currentNode.next
       currentNode.next = newNode
       return head

これらのコード例は、リンクリストにノードを挿入するための基本的な手法を示しています。プログラミング言語や環境に応じて、適切なコードを使用してください。