用c++写一个单链表反转的函数,函数的传入参数为一个链表
时间: 2024-09-16 11:03:23 浏览: 44
基于C++,写一个计算求和的函数模板,用户从键盘输入若干整数,以-1为结束标志,实现对用户输入的值进行求和,并返回求和结果
在C++中,你可以使用迭代或递归的方式来编写一个单链表反转的函数。这里是一个简单的迭代版本:
```cpp
#include <iostream>
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* reverseList(ListNode* head) {
ListNode* prev = nullptr; // 前驱节点,初始时为空
ListNode* curr = head; // 当前节点,初始时指向头节点
// 遍历整个链表
while (curr != nullptr) {
// 将当前节点的next指向前一个节点
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);
std::cout << "Original List: ";
printList(list); // 自己实现的打印链表函数
list = reverseList(list);
std::cout << "Reversed List: ";
printList(list); // 打印反转后的链表
return 0;
}
```
在这个例子中,`reverseList`函数接受一个指向链表头节点的指针,并通过改变每个节点的`next`指针将其反转。当遍历完成后,返回的就是新的头节点。
阅读全文