请用C++语言来实现
时间: 2024-09-23 22:06:55 浏览: 22
当然,这里是一个简单的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;
ListNode* nextTemp = nullptr; // 临时存储下一个节点
// 当链表非空时继续迭代
while (curr != nullptr) {
// 保存当前节点的下一个节点
nextTemp = curr->next;
// 更新当前节点的next指针,使其指向前一个节点
curr->next = prev;
// 移动prev和curr指针
prev = curr;
curr = nextTemp;
}
// 返回反转后的头节点
return prev;
}
// 打印链表
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != nullptr) {
std::cout << temp->val << " ";
temp = temp->next;
}
std::cout << std::endl;
}
int main() {
// 创建一个单向链表示例
ListNode* head = new ListNode(1);
head->next = new ListNode(2);
head->next->next = new ListNode(3);
std::cout << "Original List: ";
printList(head);
head = reverseList(head); // 反转链表
std::cout << "Reversed List: ";
printList(head);
return 0;
}
```
在这个程序中,我们首先定义了一个链表节点结构`ListNode`,然后实现了一个`reverseList`函数来递归地反转链表。`main`函数则创建了一个链表实例并打印了其原始状态,接着调用`reverseList`函数后再次打印,展示链表反转的效果。
阅读全文