逆置链表C++代码,文件输入输出
时间: 2024-10-23 12:00:57 浏览: 41
在C++中,逆置链表通常是指将链表中的元素顺序反转。以下是一个简单的递归方法,用于逆置单向链表:
```cpp
#include <iostream>
// 定义链表节点结构
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 递归函数来逆置链表
ListNode* reverseList(ListNode* head) {
// 如果链表为空或只有一个元素,无需反转
if (head == nullptr || head->next == nullptr)
return head;
// 递归地处理剩余部分,然后连接当前节点到新的头
ListNode* newHead = reverseList(head->next);
head->next->next = head; // 将头节点接到最后
head->next = nullptr; // 更新头节点的下一个指针
return newHead;
}
// 打印链表示例
void printList(ListNode* head) {
while (head != nullptr) {
std::cout << head->val << " ";
head = head->next;
}
std::cout << "\n";
}
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);
// 逆置链表
list = reverseList(list);
std::cout << "Reversed List: ";
printList(list);
return 0;
}
```
这个程序首先创建了一个包含四个整数的链表,然后调用`reverseList`函数将其逆置,最后打印出原始和逆置后的链表。
至于文件输入输出,如果想将链表读取自文件并保存到文件,可以添加两个辅助函数,一个用于从文件中读取节点生成链表,另一个用于将链表写入文件:
```cpp
ListNode* readListFromFile(const char* filename);
void writeListToFile(ListNode* head, const char* filename);
// 添加这两个函数的具体实现...
```
注意,实际的文件操作需要处理边界情况、错误检查以及数据格式转换等细节。上述代码仅给出了基本思路。如果你有其他关于链表操作的问题,随时提问
阅读全文
相关推荐
















