c语言写一个删除单链表最大值代码
时间: 2023-09-03 19:16:36 浏览: 48
以下是一个简单的C语言代码,用于删除单链表中的最大值:
```c
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int val;
struct ListNode *next;
};
void deleteMax(struct ListNode* head) {
int max = head->val;
struct ListNode* pre = head;
struct ListNode* cur = head->next;
while (cur != NULL) {
if (cur->val > max) {
max = cur->val;
pre = head;
}
pre = cur;
cur = cur->next;
}
pre->next = pre->next->next;
free(cur);
}
int main() {
// 创建链表
struct ListNode* head = (struct ListNode*)malloc(sizeof(struct ListNode));
head->val = 1;
struct ListNode* node1 = (struct ListNode*)malloc(sizeof(struct ListNode));
node1->val = 3;
head->next = node1;
struct ListNode* node2 = (struct ListNode*)malloc(sizeof(struct ListNode));
node2->val = 2;
node1->next = node2;
node2->next = NULL;
// 删除链表中的最大值
deleteMax(head);
struct ListNode* cur = head;
while (cur != NULL) {
printf("%d ", cur->val);
cur = cur->next;
}
printf("\n");
return 0;
}
```
在这个代码中,我们定义了一个 `ListNode` 结构体,其中 `val` 表示节点的值,`next` 表示下一个节点。我们使用 `deleteMax` 函数遍历链表,并找到链表中的最大值。之后,我们找到最大值的前一个节点,将其 `next` 指向最大值的下一个节点,最后释放最大值节点的内存。在 `main` 函数中,我们创建了一个简单的链表,并使用 `deleteMax` 函数删除链表中的最大值并打印出来。
阅读全文