单向链表之删除节点(C语言实现)「建议收藏」

单向链表之删除节点(C语言实现)「建议收藏」链表的创建查看删除节点就是将某一节点从链中摘除。将待删节点与其前一节点解除联系(中间或尾部)或本阶段删除(头节点),并释放相应空间(free)。删除的第一步是找到要删除的节点,同链表查找,如果找不到或链表为空,提示未找到,找到后根据情况删除此节点。删除节点两种情况:第一个节点,后面节点。步骤:1、链表为空:不用删除2、链表不为空:先循环找要删除的节点1)找到了1>找

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

链表的创建查看

删除节点就是将某一节点从链中摘除。

将待删节点与其前一节点解除联系(中间或尾部)或本阶段删除(头节点),并释放相应空间(free)。删除的第一步是找到要删除的节点,同链表查找,如果找不到或链表为空,提示未找到,找到后根据情况删除此节点。删除节点两种情况:第一个节点,后面节点。

步骤:

1、链表为空:不用删除

2、链表不为空:先循环找要删除的节点

1)找到了

1>找到的节点是头节点

被删除节点是第一个节点:只需使head指向第二个节点即可

单向链表之删除节点(C语言实现)「建议收藏」

2>找到的节点是普通节点

被删节点不是第一个节点:使被删节点的前一节点指向被删节点的后一节点即可

单向链表之删除节点(C语言实现)「建议收藏」

2)没找到

结构体节点:

typedef struct student {
    int num;        //学号
    int score;    //分数
    char name[20];
    struct student *next;//指针域
}STU;

Jetbrains全家桶1年46,售后保障稳定 demo:

1、
void link_delete_num(STU **p_head,int num)
{
    STU * pb,*pf;
    pb=*p_head;//让pb指向头节点
    if(*p_head == NULL)//链表为空链表
    {
        printf("链表为空\n");
        return ;
    }
    while(pb->num !=num && pb->next!=NULL)//循环查找要删除的节点
    {
        pf=pb;
        pb=pb->next;
    }
    if(pb->num == num)//找到了一个节点的num和num相等
    {
        if(pb == *p_head)//找到的节点是头节点
        {
            *p_head = pb->next;
        }
        else//找到的节点是普通节点
        {
            pf->next = pb->next;
        }
            free(pb);
    }
    else//没有找到咱们要删除的节点
    {
        printf("没有找到您要删除的节点\n");
    }
}

2、
void link_delete_name(STU **p_head,char *name)
{
    STU * pb,*pf;
    pb=*p_head;//让pb指向头节点
    if(*p_head == NULL)//链表为空链表
    {
        printf("链表为空\n");
        return ;
    }
    while(strcmp(pb->name,name)!=0 && pb->next!=NULL)//循环查找要删除的节点
    {
        pf=pb;
        pb=pb->next;
    }
    if(strcmp(pb->name,name)==0)//找到了一个节点的num和num相等
    {
        if(pb == *p_head)//找到的节点是头节点
        {
            *p_head = pb->next;
        }
        else//找到的节点是普通节点
        {
            pf->next = pb->next;
        }
            free(pb);
    }
    else//没有找到咱们要删除的节点
    {
        printf("没有找到您要删除的节点\n");
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206730.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 博客园博客美化相关文章目录

    博客园博客美化相关文章目录

    2021年9月4日
    63
  • Python中通过PyPDF2实现PDF添加水印

    Python中通过PyPDF2实现PDF添加水印场景PyPDF2是一个纯pythonPDF库,能够分割、合并、裁剪和转换PDF文件的页面。它还可以向PDF文件中添加自定义数据、查看选项和密码。它可以从PDF检索文本和元数据,还可以将整个文件合并在一起。PyPDF21.26.0文档:https://pythonhosted.org/PyPDF2/实现使用pip安装pypddf2新建文件夹waterPDF在…

    2022年6月23日
    24
  • js json字符串转json数组_string转json数组

    js json字符串转json数组_string转json数组查了很久,也实践了很多,都没有成功。网上说得最多的就是用 net.sf.json.JSONArray和net.sf.json.JSONObject两个jar包里面的JSONArrayjsonArray=JSONArray.fromObject(JsonStr);//字符串转成Json对象list=JSONArray.toList(jsonArray,Pojo.class);

    2022年10月6日
    5
  • video operation_open vino

    video operation_open vino转载注明出处:http://zjbintsystem.blog.51cto.com/964211/713240从盛夏走到深秋,我们继续DAVINCIDM365-DM368的开发。说来惭愧,人家51CTO热情支持本博客,而本人却一直没有像其他博客之星一样频繁更新博客,心里确实说不过去。管理公司确实很累,有更急的客户的项目要做,我们成功先推出了DM6446-810MHz的核心板( htt

    2022年8月13日
    4
  • PXE启动原理以及与普通Linux启动的对比

    PXE启动原理以及与普通Linux启动的对比关于PXE部署的详细配置的文章已经有不少了,这篇文章主要讲一下PXE启动的原理以及PXE启动和普通Linux启动的对比。

    2022年6月29日
    26
  • 一眼看懂map和flatmap的区别

    一眼看懂map和flatmap的区别map的作用很容易理解就是对rdd之中的元素进行逐一进行函数操作映射为另外一个rdd。flatMap的操作是将函数应用于rdd之中的每一个元素,将返回的迭代器的所有内容构成新的rdd。通常用来切分单词。Spark中map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象;而flatMap函数则是两个操作的集合——正是“先映射后扁平化”:操作1:同map函数一样:对每一条输入进…

    2022年5月4日
    63

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号