定义节点结构体并创建双向链表类,通过append和prepend添加节点,正确维护前后指针,实现正向与反向遍历,最后在析构函数中释放内存。

在C++中创建双向链表,核心是定义一个节点结构体,其中包含数据域和两个指针:一个指向下一个节点(next),另一个指向前一个节点(prev)。然后通过动态分配内存(new)来添加节点,并正确维护前后指针的连接关系。
每个节点需要存储数据以及前后节点的地址。使用struct可以方便地组织这些成员。
struct Node {
int data; // 数据域,可根据需要改为其他类型
Node* prev; // 指向前一个节点
Node* next; // 指向后一个节点
<pre class='brush:php;toolbar:false;'>// 构造函数,便于初始化
Node(int value) : data(value), prev(nullptr), next(nullptr) {}};
封装操作逻辑,便于管理头尾指针和提供增删查改接口。
立即学习“C++免费学习笔记(深入)”;
class DoublyLinkedList {
private:
Node* head;
Node* tail;
<p>public:
DoublyLinkedList() : head(nullptr), tail(nullptr) {}</p><pre class='brush:php;toolbar:false;'>// 插入节点到末尾
void append(int value) {
Node* newNode = new Node(value);
if (!head) {
head = tail = newNode;
} else {
newNode->prev = tail;
tail->next = newNode;
tail = newNode;
}
}
// 插入节点到开头
void prepend(int value) {
Node* newNode = new Node(value);
if (!head) {
head = tail = newNode;
} else {
newNode->next = head;
head->prev = newNode;
head = newNode;
}
}
// 打印链表(从头到尾)
void displayForward() {
Node* current = head;
while (current) {
<strong>std::cout << current->data << " <-> ";</strong>
current = current->next;
}
<strong>std::cout << "nullptr" << std::endl;</strong>
}
// 打印链表(从尾到头)
void displayBackward() {
Node* current = tail;
while (current) {
<strong>std::cout << current->data << " <-> ";</strong>
current = current->prev;
}
<strong>std::cout << "nullptr" << std::endl;</strong>
}
// 析构函数清理内存
~DoublyLinkedList() {
Node* current = head;
while (current) {
Node* temp = current;
current = current->next;
delete temp;
}
}};
下面是一个简单的main函数演示如何使用上述双向链表。
#include <iostream>
using namespace std;
<p>int main() {
DoublyLinkedList dll;
dll.append(10);
dll.append(20);
dll.prepend(5);
dll.displayForward(); // 输出: 5 <-> 10 <-> 20 <-> nullptr
dll.displayBackward(); // 输出: 20 <-> 10 <-> 5 <-> nullptr
return 0;
}</p>基本上就这些。只要注意指针赋值顺序,避免出现悬空或循环引用,双向链表就能稳定工作。常见错误包括忘记更新prev指针、删除节点时未释放内存等,开发时需特别留意。
以上就是c++++中如何创建双向链表_c++双向链表创建方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号