用C++算法把单链表L倒置
时间: 2024-10-04 14:05:12 浏览: 32
不带头节点的单链表倒置算法
在C++中,有一种常见的算法可以将单链表( Linked List)倒置,那就是迭代法。这种方法不需要额外的空间存储数据,仅通过改变节点的指针指向来实现列表的逆序。以下是基本的步骤:
1. 定义两个指针,`prev` 和 `current`,初始都设置为 `nullptr` 和 `head`(链表的头节点)。
2. 当 `current` 不为 `nullptr` 时,执行循环:
- 将 `current` 的下一个节点赋值给 `temp`,保存当前节点的下一个节点。
- 更新 `current` 的下一个节点为 `prev`,即将 `current` 指向它原本的前一个节点。
- 向后移动 `prev` 和 `current`,即 `prev = current`,`current = temp`。
3. 循环结束后,`prev` 就会成为新的头节点,因为每次迭代我们都改变了 `current` 的指向。
下面是一个简单的C++代码示例:
```cpp
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(nullptr) {}
};
ListNode* reverseList(ListNode* head) {
ListNode* prev = nullptr;
ListNode* current = head;
while (current != nullptr) {
ListNode* temp = current->next;
current->next = prev;
prev = current;
current = temp;
}
return prev; // 返回新的头节点
}
```
阅读全文