请写一个C++程序,建立一个简单的双链表
时间: 2024-09-22 07:05:27 浏览: 37
为了帮助你理解如何在C++中创建一个简单的双向链表,下面是一个基础版本的代码实现:
```cpp
#include <iostream>
// 定义双向链表节点
struct Node {
int data;
Node* prev;
Node* next;
// 构造函数
Node(int value = 0, Node* prev = nullptr, Node* next = nullptr)
: data(value), prev(prev), next(next) {}
};
// 双向链表类
class DoublyLinkedList {
private:
Node* head; // 头节点
Node* tail; // 尾节点
public:
// 构造函数,初始化空链表
DoublyLinkedList() : head(nullptr), tail(nullptr) {}
// 添加节点到链表末尾
void append(int value) {
if (!head) {
head = tail = new Node(value);
return;
}
Node* newNode = new Node(value, tail, nullptr);
tail->next = newNode;
tail = newNode;
}
// 打印链表
void printList() {
Node* current = head;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
std::cout << "\n";
}
// 删除指定值的节点(若存在)
void remove(int value) {
Node* current = head;
Node* prev = nullptr;
while (current != nullptr && current->data != value) {
prev = current;
current = current->next;
}
if (current != nullptr) {
if (prev == nullptr) { // 头部节点
head = current->next;
if (head) head->prev = nullptr;
} else { // 内部节点
prev->next = current->next;
if (current->next) current->next->prev = prev;
}
delete current;
}
}
};
int main() {
DoublyLinkedList list;
list.append(1);
list.append(2);
list.append(3);
std::cout << "Original List:\n";
list.printList();
list.remove(2);
std::cout << "After Removing 2:\n";
list.printList();
return 0;
}
```
这个程序首先定义了一个双向链表节点,然后创建了链表类,包括添加节点、打印链表和删除节点的方法。在主函数中演示了如何操作这个链表。注意这只是一个基本示例,实际项目中可能还需要考虑错误处理和更复杂的操作。
阅读全文