まず、双方向リンクリストのノードを表すクラスを作成します。各ノードには、データを格納する変数と前後のノードへのポインタが含まれます。
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のデータを持つノードを削除しています。