单链表逆置c++代码
时间: 2024-10-11 14:01:02 浏览: 71
单链表逆置是指将链表中的节点顺序反转。在C++中,你可以通过迭代或者递归的方式来实现这个操作。这里是一个简单的迭代方法的示例代码:
```cpp
#include <iostream>
// 定义链表结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
ListNode* reverseList(ListNode* head) {
ListNode* prev = nullptr; // 初始化前驱节点
ListNode* curr = head; // 当前节点
// 迭代过程
while (curr != nullptr) {
ListNode* temp = curr->next; // 保存当前节点的下一个节点
curr->next = prev; // 将当前节点指向前驱
prev = curr; // 移动前驱到当前位置
curr = temp; // 移动当前节点到下一个未处理的位置
}
return prev; // 返回新的头节点
}
int main() {
// 创建一个示例链表
ListNode* list = new ListNode(1);
list->next = new ListNode(2);
list->next->next = new ListNode(3);
list->next->next->next = new ListNode(4);
std::cout << "Original List: ";
printList(list); // 打印原链表
ListNode* reversedList = reverseList(list);
std::cout << "Reversed List: ";
printList(reversedList); // 打印反转后的链表
return 0;
}
// 辅助函数:打印链表
void printList(ListNode* node) {
while (node != nullptr) {
std::cout << node->val << " -> ";
node = node->next;
}
std::cout << "NULL" << std::endl;
}
```
这段代码首先创建了一个链表,然后调用`reverseList`函数对其进行逆置,最后再打印出结果。
阅读全文