设计一个算法,通过一趟遍历确定长度为n的单链表中值最大的节点用c++语言不用类的语句但用结构体回答。
时间: 2024-12-08 11:16:37 浏览: 21
设计一个简单的C++函数来找到单链表中值最大的节点,我们可以创建一个名为`ListNode`的结构体表示链表节点,并定义一个辅助函数`findMaxNode`来完成任务。这个函数会遍历一次链表,同时维护当前已访问的最大值和最大值节点。
```cpp
#include <iostream>
// 链表节点结构体
struct ListNode {
int val; // 节点值
ListNode* next; // 指向下一个节点的指针
};
// 辅助函数:找到并返回链表中值最大的节点
ListNode* findMaxNode(ListNode* head) {
if (head == nullptr) return nullptr; // 空链表处理
ListNode* maxNode = head; // 初始化最大值节点为头节点
ListNode* current = head; // 当前节点
while (current != nullptr) { // 遍历链表
if (current->val > maxNode->val) { // 如果当前节点值大于最大值
maxNode = current; // 更新最大值节点
}
current = current->next; // 移动到下一个节点
}
return maxNode;
}
int main() {
// 创建示例链表并调用函数
ListNode* list = new ListNode{5, new ListNode{3, new ListNode{9, new ListNode{1, new ListNode{7}}}}};
ListNode* maxNode = findMaxNode(list);
if (maxNode != nullptr) {
std::cout << "链表中最大值节点的值是: " << maxNode->val << std::endl;
} else {
std::cout << "链表为空" << std::endl;
}
delete maxNode; // 手动释放内存
return 0;
}
```
阅读全文