单链表头插法逆置C++
时间: 2024-10-08 07:17:01 浏览: 35
单链表逆置-c++-文档输出
单链表头部插入并逆序操作在C++中通常通过双指针法来实现。首先创建一个新的节点作为新的头结点,然后遍历原链表,将每个节点的数据插入到新链表的尾部,同时保持原链表的连接。以下是基本步骤:
1. 定义两个指针 `prev` 和 `current`,初始值都设为 NULL。
2. 创建一个临时头节点 `new_head`,并将其指向 NULL。
3. 遍历原链表:
a. 将当前节点 (`current`) 的数据赋值给 `temp`,然后移动 `current` 指向下一个节点。
b. 如果 `current` 还不是空节点,将 `current` 更新为 `prev`,然后将 `prev` 设置为 `temp`,因为我们要把 `temp` 插入到 `prev` 的后面。
4. 当遍历结束后,`prev` 就指向了原链表的最后一个节点,而 `new_head` 就是新的头节点。
C++伪代码示例:
```cpp
Node* reverseList(Node* head) {
Node* prev = nullptr;
Node* current = head;
Node* new_head = nullptr; // 新链表的头
while (current != nullptr) {
Node* temp = current->data; // 保存当前节点数据
current = current->next; // 移动current
if (prev != nullptr)
prev->next = temp; // 将temp插到prev后面
else
new_head = temp; // 如果prev为空,设置new_head
prev = temp; // prev移动到temp位置
}
return new_head;
}
```
阅读全文