求单循环链表L最大元素,返回其结点指针,若为空,返回NULL.(C语言)
时间: 2024-10-10 19:13:24 浏览: 47
C语言单双向链表
在C语言中,如果你有一个单循环链表(即最后一个节点的next指针指向第一个节点),你可以通过遍历链表并跟踪当前的最大值来找到最大元素的结点指针。以下是一个简单的算法:
```c
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
ListNode* findMaxNode(ListNode* head) {
if (head == NULL) { // 空链表处理
return NULL;
}
ListNode* maxNode = head; // 初始化最大节点为头节点
ListNode* current = head->next;
while (current != head) { // 遍历直到回到头部
if (maxNode->val < current->val) {
maxNode = current; // 更新最大值
}
current = current->next;
}
return maxNode;
}
```
这个函数首先检查链表是否为空,如果为空则直接返回NULL。然后它会从第二个节点开始比较每个节点的值,如果发现当前节点的值大于`maxNode`的值,就更新`maxNode`为当前节点。最后,当循环结束回到头节点时,`maxNode`就指向了链表中的最大节点。
阅读全文