实现双向链表的逆置C++
时间: 2024-09-09 19:14:53 浏览: 68
在C++中,实现双向链表的逆置可以分为以下几个步骤:
1. 首先,创建一个Node类,包含数据域data、指向前驱节点的prev指针和指向后继节点的next指针。
```cpp
class Node {
public:
int data;
Node* prev;
Node* next;
// 构造函数和析构函数...
};
```
2. 然后,编写一个ReverseList类,里面有一个reverse()函数用于逆置链表。这通常通过三个指针prev, current, 和 next来完成,初始时prev和current都指向头结点,next为空。
```cpp
void ReverseList::reverse(Node*& head) {
if (head == nullptr || head->next == nullptr) return; // 如果链表为空或只有一个元素,则无需反转
Node* prev = nullptr, *current = head, *next;
while (current != nullptr) {
next = current->next; // 保存当前节点的下一个节点
current->next = prev; // 更新当前节点的next指针,使其指向前一个节点
current->prev = next; // 更新当前节点的prev指针,使其指向原来的下一个节点
prev = current; // 移动prev到当前节点
current = next; // 移动current到下一个节点
}
head = prev; // 最终更新头结点为新的头结点
}
```
阅读全文