ダブルリンクドリストの実装と使用方法


  1. ダブルリンクドリストの概要 ダブルリンクドリストは、要素(ノード)がデータとポインタ(前のノードと次のノードへの参照)からなる連結リストです。各要素は前の要素と次の要素との両方にリンクされており、要素の追加や削除が効率的に行えます。

  2. ダブルリンクドリストの実装方法 以下に、C++でのダブルリンクドリストの実装例を示します。

#include <iostream>
struct Node {
    int data;
    Node* prev;
    Node* next;
};
class DoublyLinkedList {
private:
    Node* head;
public:
    DoublyLinkedList() {
        head = nullptr;
    }
    void addNode(int newData) {
        Node* newNode = new Node();
        newNode->data = newData;
        newNode->prev = nullptr;
        newNode->next = nullptr;
        if (head == nullptr) {
            head = newNode;
        } else {
            Node* temp = head;
            while (temp->next != nullptr) {
                temp = temp->next;
            }
            temp->next = newNode;
            newNode->prev = temp;
        }
    }
    void displayList() {
        Node* temp = head;
        while (temp != nullptr) {
            std::cout << temp->data << " ";
            temp = temp->next;
        }
        std::cout << std::endl;
    }
};
int main() {
    DoublyLinkedList myList;
    myList.addNode(5);
    myList.addNode(10);
    myList.addNode(15);
    myList.displayList();
    return 0;
}
  1. ダブルリンクドリストの使用方法 上記の実装例では、DoublyLinkedListクラスを使用してダブルリンクドリストを作成し、addNodeメソッドで要素を追加します。displayListメソッドを使用すると、リスト内の要素を表示することができます。

ダブルリンクドリストは、要素の挿入や削除が頻繁に行われる場合や、逆方向の走査が必要な場合に有用です。例えば、双方向のイテレーションが必要な場合や、要素の削除が高速に行える場合などです。

  1. その他のダブルリンクドリストの操作 ダブルリンクドリストには他にも様々な操作があります。例えば、指定した要素の削除や挿入、逆順での表示などです。これらの操作も実装例を参考にして学ぶことができます。

以上が、ダブルリンクドリストの実装と使用方法についての解説です。ダブルリンクドリストは、要素の追加や削除が容易であり、さまざまなアプリケーションで活用されています。