实现删除单链表中最小值结点的算法,可以分为以下步骤:
-
定义结构体Node表示单链表中的结点,包含该结点的值val和下一结点的指针next。
-
定义一个头结点head,使其next指向单链表的第一个结点。
-
遍历单链表,找出最小值的结点,并记录其前驱结点pre和后继结点cur。
-
将pre的next指针指向cur的next,即可删除最小值结点。
下面是用C语言实现删除单链表中最小值结点的代码:
#include <stdio.h>
#include <stdlib.h>
// 定义单链表结点结构体
typedef struct Node {
int val;
struct Node *next;
} Node;
// 删除单链表中最小值结点函数
void deleteMinNode(Node *head) {
if (head == NULL || head->next == NULL) {
return;
}
Node *pre = head;
Node *cur = head->next;
Node *minPre = pre;
Node *minCur = cur;
while (cur != NULL) {
if (cur->val < minCur->val) {
minPre = pre;
minCur = cur;
}
pre = cur;
cur = cur->next;
}
minPre->next = minCur->next;