这是一道函数题,请给出题解部分代码
时间: 2024-10-09 11:04:09 浏览: 22
这是一道要求提供函数题目的代码片段,它涉及到对单链表进行逆序的操作。在C++中,我们可以使用迭代的方式实现链表的反转,这里是一个简单的题解代码示例:
```cpp
#include <iostream>
// 定义链表节点结构
struct ListNode {
int val; // 数据域
ListNode* next; // 指针域,指向下一个节点
ListNode(int x) : val(x), next(NULL) {} // 构造函数
};
// 反转链表函数
ListNode* reverseList(ListNode* head) {
if (head == nullptr || head->next == nullptr) { // 空链表或只有一节点,直接返回
return head;
}
ListNode* prev = nullptr; // 初始化前驱节点为NULL
ListNode* curr = head; // 初始化当前节点为头节点
// 使用三个指针遍历并反转链表
while (curr != nullptr) {
ListNode* temp = curr->next; // 临时保存当前节点的下一个节点
curr->next = prev; // 将当前节点的next指向前一个节点
prev = curr; // 更新前驱节点
curr = temp; // 移动当前节点到下一个节点
}
return prev; // 返回新头节点
}
// 主函数展示(仅做演示,一般不会出现在实际题解)
int main() {
ListNode* head = new ListNode(1);
// 连接其他节点...
head = reverseList(head); // 反转链表
// 打印反转后的链表...
while (head != nullptr) {
std::cout << head->val << " -> ";
head = head->next;
}
std::cout << "nullptr" << std::endl;
delete head; // 清理内存
return 0;
}
阅读全文