c++ 使用 *next和**prev创建链表
时间: 2024-10-09 16:00:23 浏览: 9
在C++中,使用`*next`和`**prev`通常是指双向链表(Doubly Linked List),这是一种每个节点包含两个指针的链表结构:一个指向前一个节点(`prev`),另一个指向后一个节点(`next`)。这种设计使得插入和删除操作更为方便。
创建链表的基本步骤如下:
1. 定义一个节点类(Node),它通常包含三个成员变量:数据域、指向下一个节点的指针`next`和指向前一个节点的指针`prev`。
```cpp
class Node {
public:
int data;
Node* next;
Node* prev;
// 构造函数和析构函数等...
};
```
2. 创建链表类(LinkedList),并初始化头结点(head)为`nullptr`。
```cpp
class LinkedList {
private:
Node* head;
public:
LinkedList() : head(nullptr) {}
// 其他链表操作,如添加节点、遍历等...
};
```
3. 添加新节点的方法,比如`addNode`,会创建一个新的`Node`,并更新前后节点的指针。
```cpp
void LinkedList::addNode(int value) {
Node* newNode = new Node{value, nullptr, head};
if (head != nullptr) {
head->prev = newNode; // 如果不是第一个节点,设置前驱节点
}
newNode->next = head; // 新节点成为新的头结点
head = newNode; // 更新链表头
}
```
4. 通过`prev`和`next`访问节点,例如在遍历时。
```cpp
void LinkedList::display() {
Node* current = head;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
std::cout << std::endl;
}
```