删除单链表中的最小值结点
数据结构
链表
笔试题1:设计一个算法删除单链表L(有头结点)中的一个最小值结点。

/*************************************************************************
*
* file name: 2.c
* author : lu.ciana.598393@gmail.com
* date : 2024/04/21
* function : 设计一个算法删除单链表L(有头结点)中的一个最小值结点。
* note : None
*
* CopyRight (c) 2024 lu.ciana.598393@gmail.com All Right Reserved
*
**************************************************************************/
#include <stdio.h>
#include <stdbool.h>
bool Linked_MinDel(Linklist *L)
{
Linklist* pre = L;
Linklist* Min_Addr =NULL;
//将首结点的值赋给Min
int Min = L->next->data;
if (L->next == NULL)
{
printf("链表为空 无法删除\n");
return false;
}
//遍历
while(L -> next)
{
//Min与首结点开始进行比较
if(Min > L->next->data)
{
//小于Min的赋值给Min,并且记录其地址
Min = L->next->data;
Min_Addr = L->next;
//记录删除元素的直接前驱的地址
pre = L;
}
L = L -> next;
}
//在头部或者中间
pre->next = Min_Addr->next;
Min_Addr->next = NULL;
free(Min_Addr);
return ture;
}

浙公网安备 33010602011771号