首页 > 其他分享 >删除链表中指定结点

删除链表中指定结点

时间:2024-04-22 21:23:14浏览次数:21  
标签:结点 删除 head next 链表 temp2

删除链表中指定结点
image

/******************************************************
 *
 *  name      :  DelTargetNode
 *	function  :  删除链表中指定的结点
 *  argument
 *               @head :链表头结点的地址
 *               @num  :需要删除的第num个结点
 *
 *  retval    : 成功返回1,失败返回0
 *  author    : Dazz
 *  date      : 2024/4/22
 *  note      : None
 *
 * *******************************************************/
bool DelTargetNode(LinkList_ *head, unsigned int num)
{
    // 错误处理
    if (NULL == head)
    {
        printf("请输入有效地址\n");
        return false;
    }
    // 对头结点做备份
    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;

    return true;
}

标签:结点,删除,head,next,链表,temp2
From: https://www.cnblogs.com/Dazz24/p/18151571

相关文章

  • 设计一个算法删除单链表L(有头节点)中的一个最小值结点
    数据结构链表笔试题:设计一个算法删除单链表L(有头节点)中的一个最小值结点。/****************************************************************** * filename : linkedlist.c* author : [email protected]* data : 2024/04/22* function : 删除单链表中的一个最小......
  • 链表
    链表在C语言中,链表是一种常用的数据结构,它可以用来存储一系列的元素。链表中的每个元素都存储了下一个元素的地址,从而形成了一条链。这种结构使得在插入和删除元素时不需要像数组那样移动大量元素,因此它在插入和删除操作多的情况下有很大的优势。在C语言中,链表可以有多种实现方......
  • 设计一个算法删除单链表L(有头结点)中的一个最小值结点
    设计一个算法删除单链表L(有头结点)中的一个最小值结点/********************************************************************* 函数名称: LList_delatemin* 函数功能:删除单链表L(有头结点)中的一个最小值结点* 函数参数:* @a:*L*@b:*返回......
  • 假设该链表只给出了头指针 head。在不改变链表的前提下,请设计一个尽可能高效的算法,查
    假设该链表只给出了头指针head。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k(k为正整数)个位置上的结点。若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。/********************************************************************* 函数名称......
  • 查找链表中倒数第k个数
    include<stdio.h>include<stdbool.h>include<stdlib.h>/********************************************************************函数名称: MinDelate函数功能:/*假设该链表只给出了头指针head。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k(......
  • C语言单向链表的创建和增删减查相关程序
    对单向链表进行删除和插入的程序设计/********************************************************************* filename: linkedlist.c* author :[email protected]* date :2024/04/22* function:实现单向链表的创建、拆入、删除功能* note :None**......
  • 删除链表中最小的一个结点
    include<stdio.h>include<stdbool.h>include<stdlib.h>//指的是单向链表中的结点有效数据类型,用户可以根据需要进行修改typedefintDataType_t;//构造链表的结点,链表中所有结点的数据类型应该是相同的typedefstructLinkedList{DataType_tdata;//结点......
  • 删除链表中的尾部结点
    删除链表中的尾部结点/********************************************************name:DelTailNode* function:删除链表尾部结点*argument*@head:链表头结点的地址**retval:成功返回1,失败返回0*author:Dazz*......
  • 《渣男代码历险记》第五章:设计一个算法删除单链表L(有头结点)中的一个最小值结点
    为了删除单链表L中的一个最小值结点,我们可以遍历链表,找到最小值结点及其前驱结点,然后修改前驱结点的指针,使其指向最小值结点的下一个结点。以下是算法的解析和代码实现:初始化两个指针pre和cur,分别指向头结点和头结点的下一个结点。初始化一个变量min_val,用于存储当前最小值,将其......
  • C语言实现链表增删减改
    /********************************************************************filename: main.cauthor :[email protected] :2024/04/22function:实现对链表的增删改查note :NoneCopyRight(c)[email protected]***......