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

/*
 * ==============================================================
 * File name:        delete_min_node.c
 * Author:           3360652783@qq.com
 * Date created:     2026-07-22
 * Description:      Delete the node with the minimum value in a singly linked list with head node.
 * Copyright notice: All right Reserved
 * ==============================================================
 */

//构建删除最小值结点的算法
void LinkList_DelMin(*L){
    LinkList *p0 = L;                 //p0记录最小值前一个结点
    LinkList *P1 = L;                 //p1记录最小值
    LinkList *p2 = L->next;           //p2用于遍历链表
    while( p2->next != NULL ){        //遍历链表的过程中将最小值赋给p1
        if( p1->data > p2->data ){
            p1 = p2;
            p2 = p2->next;
        }
        else{
            p2 = p2->next;
        }
    }
    p1 = ( p1->data < p2->data)?( p1->data ):( p2->data );       //判断链表最后一个值是否为最小值
    while( p0->next != p1 ){
        p0 = p0->next;
    }
    p0->next = p1->next;           //删除最小值并释放空间
    p1->next = NULL;
    free(p1);
}
posted @ 2026-07-23 13:40    阅读(1)  评论(0)    收藏  举报