📅  最后修改于: 2023-12-03 14:56:19.639000             🧑  作者: Mango
本文介绍了一个用于删除双向链表中节点的 C++ 程序。双向链表是一种常见的数据结构,每个节点包含一个指向前一个节点和后一个节点的指针。
首先,我们需要定义一个双向链表的节点结构。每个节点都包含一个数据项和指向前一个节点和后一个节点的指针。
struct Node {
int data;
Node* prev;
Node* next;
};
接下来,我们将实现一个函数来删除双向链表中的节点。该函数将接受一个指向链表头节点和要删除的节点的指针。
void deleteNode(Node* head, Node* toDelete) {
// 如果要删除的节点是链表的头节点
if (head == toDelete) {
head = toDelete->next;
}
// 如果要删除的节点不是链表的最后一个节点
if (toDelete->next != nullptr) {
toDelete->next->prev = toDelete->prev;
}
// 如果要删除的节点不是链表的第一个节点
if (toDelete->prev != nullptr) {
toDelete->prev->next = toDelete->next;
}
// 释放要删除的节点的内存
delete toDelete;
}
现在,我们将演示如何使用这个删除节点的函数来删除双向链表中的节点。
int main() {
// 创建一个双向链表
Node* head = new Node;
head->data = 1;
head->prev = nullptr;
head->next = nullptr;
Node* node2 = new Node;
node2->data = 2;
node2->prev = head;
node2->next = nullptr;
head->next = node2;
Node* node3 = new Node;
node3->data = 3;
node3->prev = node2;
node3->next = nullptr;
node2->next = node3;
// 删除节点 2
deleteNode(head, node2);
// 输出剩余节点的数据
Node* current = head;
while (current != nullptr) {
cout << current->data << " ";
current = current->next;
}
return 0;
}
上述示例代码将删除双向链表中的节点 2,并输出剩余节点的数据。
本文介绍了一个用于删除双向链表中节点的 C++ 程序。提供了一个删除节点的函数和一个使用示例。你可以根据自己的需求和数据结构进行修改和扩展。