首页 > 其他分享 >删除最小值结点

删除最小值结点

时间:2024-04-22 21:46:58浏览次数:22  
标签:结点 删除 temp next 链表 temp2 最小值

image

/******************************************************
 *
 *  name      :  DelTargetNode
 *	function  :  删除单链表L(有头结点)中的一个最小值结点
 *  argument
 *               @L    :链表头结点的地址
 *
 *  retval    : None
 *  author    : Dazz
 *  date      : 2024/4/22
 *  note      : None
 *
 * *******************************************************/
void DelMinNode(LinkList_t *L)
{
    // 错误处理
    if (NULL == head)
    {
        printf("请输入有效地址\n");
        return;
    }

    // Min记录链表中的最小值结点的值
    int Min = L->next;
    // 备份链表的头结点地址
    LinkList_t *temp = L;
    // 记录最小值结点为第几个结点
    int num = 1;
    // 计数器,记录当前为第几个结点
    int count = 1;

    // 遍历链表,找到最小值结点
    while (temp->next)
    {
        temp = temp->next;
        count++;

        if (temp->next < Min)
        {
            Min = temp->next;
            num = count;
        }
    }

    // 再次对头结点做备份
    LinkList_t *temp1 = head;
    // 对头结点的直接后继做备份
    LinkList_t *temp2 = head->next;

    // 遍历链表,找到待删除结点和待删除结点的直接前驱
    for (int i = num; i > 1; i--)
    {
        temp1 = temp1->next;
        temp2 = temp2->next;
    }

    // 将待删结点的直接前驱的指针域指向待删除结点的直接后继
    temp1->next = temp2->next;

    // 将待删结点的指针域指向NULL
    temp2->next = NULL;

    // 删除待删结点
    free(temp2);
    temp2 = NULL;
}

标签:结点,删除,temp,next,链表,temp2,最小值
From: https://www.cnblogs.com/Dazz24/p/18151609

相关文章

  • 删除
    删除boolLList_TailInsert(LList_t*Head,DataType_tdata){if(NULL==Head)returnfalse;//对链表的头文件的地址进行备份 LList_t*Phead=Head; LList_t*lhead=Head; //首结点 while(Phead->next!=NULL) { //把头的直接后继作为新的头......
  • 删除顺序表L中下标为p(0≤p≤length-1)的元素,成功返回1,否则返回0,并将被删除元素的值赋给
    /********************************************************************************************************** filename: Zqh_splist_4.22.2.c* author : [email protected]* date : 2024/04/22* function: 删除顺序表L中下标为p(0≤p≤length-1)的元素,成功返回1......
  • 删除链表中(有头节点)一个最小值节点
    删除链表中(有头节点)一个最小值节点/********************************************************************** name : deletelinkedlist* function:删除链表中(有头节点)一个最小值节点* argument:* @Head:链表结构体头头节点地址** retval :调用成功......
  • 单向链表遍历插入和删除
    /***********************************************************************************filename:002_单向链表.cauthor:[email protected]:2024/04/22function:单向链表的遍历插入和删除功能的完善note......
  • 删除链表中指定结点
    删除链表中指定结点/********************************************************name:DelTargetNode* function:删除链表中指定的结点*argument*@head:链表头结点的地址*@num:需要删除的第num个结点**retva......
  • 设计一个算法删除单链表L(有头节点)中的一个最小值结点
    数据结构链表笔试题:设计一个算法删除单链表L(有头节点)中的一个最小值结点。/****************************************************************** * filename : linkedlist.c* author : [email protected]* data : 2024/04/22* function : 删除单链表中的一个最小......
  • 设计一个算法删除单链表L(有头结点)中的一个最小值结点
    设计一个算法删除单链表L(有头结点)中的一个最小值结点/********************************************************************* 函数名称: LList_delatemin* 函数功能:删除单链表L(有头结点)中的一个最小值结点* 函数参数:* @a:*L*@b:*返回......
  • 假设该链表只给出了头指针 head。在不改变链表的前提下,请设计一个尽可能高效的算法,查
    假设该链表只给出了头指针head。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k(k为正整数)个位置上的结点。若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。/********************************************************************* 函数名称......
  • 删除链表中最小的一个结点
    include<stdio.h>include<stdbool.h>include<stdlib.h>//指的是单向链表中的结点有效数据类型,用户可以根据需要进行修改typedefintDataType_t;//构造链表的结点,链表中所有结点的数据类型应该是相同的typedefstructLinkedList{DataType_tdata;//结点......
  • 删除链表中的尾部结点
    删除链表中的尾部结点/********************************************************name:DelTailNode* function:删除链表尾部结点*argument*@head:链表头结点的地址**retval:成功返回1,失败返回0*author:Dazz*......