删除单链表中的最小值结点

数据结构

链表

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

/*************************************************************************
 *
 *  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;
}
posted @ 2024-04-23 01:41  luxiaolim  阅读(51)  评论(0)    收藏  举报