使用C++语言创建一个双向链表
时间: 2024-09-20 21:18:17 浏览: 77
数据结构 双向链表(C++)
在C++中,创建一个双向链表通常涉及到定义两个节点结构(Node),以及包含指向头结点和尾节点指针的链表类。以下是创建一个简单的双向链表的基本步骤:
1. 定义节点(Node)结构:
```cpp
class Node {
public:
int data;
Node* prev;
Node* next;
// 构造函数
Node(int value) : data(value), prev(nullptr), next(nullptr) {}
};
```
这里,`data`用于存储数据,`prev`和`next`分别是指向前一个节点和下一个节点的指针。
2. 创建链表类(LinkedList):
```cpp
class DoublyLinkedList {
private:
Node* head;
Node* tail;
public:
DoublyLinkedList() : head(nullptr), tail(nullptr) {}
// 添加元素到链表尾部
void addNode(int value) {
if (!head) {
head = new Node(value);
tail = head;
} else {
Node* newNode = new Node(value);
tail->next = newNode;
newNode->prev = tail;
tail = newNode;
}
}
// 删除指定值的节点(仅删除第一个找到的)
void removeNode(int value) {
Node* current = head;
while (current != nullptr) {
if (current->data == value) {
if (current == head) {
head = head->next;
if (head)
head->prev = nullptr;
} else {
current->prev->next = current->next;
if (current == tail)
tail = current->prev;
}
delete current;
break;
}
current = current->next;
}
}
// 其他操作,如遍历、查找等...
};
```
以上是一个基本的双向链表实现,包含了添加节点和删除节点的操作。注意,这只是一个简化的版本,实际应用中可能需要处理更多边界条件和异常情况。
阅读全文