C++での双方向リンクリストの更新方法


まず、双方向リンクリストのノードを表すクラスを作成します。各ノードには、データを格納する変数と前後のノードへのポインタが含まれます。

class Node {
public:
    int data;
    Node* prev;
    Node* next;
};

次に、リンクリストを管理するクラスを作成します。このクラスには、ノードの追加と削除を行うメソッドが含まれます。

class DoublyLinkedList {
private:
    Node* head;
public:
    // ノードの挿入
    void insertNode(int newData) {
        Node* newNode = new Node();
        newNode->data = newData;
        newNode->prev = nullptr;
        newNode->next = head;
        if (head != nullptr) {
            head->prev = newNode;
        }
        head = newNode;
    }
// ノードの削除
    void deleteNode(int targetData) {
        Node* currentNode = head;
        while (currentNode != nullptr) {
            if (currentNode->data == targetData) {
                if (currentNode->prev != nullptr) {
                    currentNode->prev->next = currentNode->next;
                } else {
                    head = currentNode->next;
                }
                if (currentNode->next != nullptr) {
                    currentNode->next->prev = currentNode->prev;
                }
                delete currentNode;
                break;
            }
            currentNode = currentNode->next;
        }
    }
};

上記のコードでは、insertNodeメソッドは新しいノードをリストの先頭に追加し、deleteNodeメソッドは指定されたデータを持つノードを削除します。

これらのメソッドを使用する例を以下に示します。

int main() {
    DoublyLinkedList list;
    // ノードの追加
    list.insertNode(10);
    list.insertNode(20);
    list.insertNode(30);
    // ノードの削除
    list.deleteNode(20);
    return 0;
}

この例では、リストに10、20、30の3つのノードを追加し、その後20のデータを持つノードを削除しています。