单向链表之删除节点(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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux安装weget命令,linux安装wget命令

    linux安装weget命令,linux安装wget命令wget命令是linux系统下的一个常用命令。下面由学习啦小编为大家整理了linux安装wget命令的相关知识,希望大家喜欢!linux安装wget命令方法一debian或者ubuntu:sudoapt-getinstallwgetcentos:sudoyum-yinstallwgetlinux安装wget命令方法二我们先安装linux系统比如centos7.1里面有的就…

    2022年10月16日
    2
  • 基于Python的OpenCV人脸检测

    基于Python的OpenCV人脸检测本文将要讲述的是Python环境下如何用OpenCV检测人脸,本文的主要内容分为:1、检测图片中的人脸2、实时检测视频中出现的人脸3、用运设备的摄像头实时检测人脸提前做的准备:安装好Python3下载安装OpenCV库,方法是pipinstallopencv-python-ihttps://mirrors.aliyun.com/pypi/simple/–trusted-host=mirrors.aliyun.com/pypi/simple下载特征数据HAAR和LBP,这两种数

    2022年6月7日
    32
  • mysql 5.6 新安装登录

    mysql 5.6 新安装登录

    2021年8月26日
    61
  • spring拦截器和过滤器有什么区别_拦截器和过滤器的区别面试

    spring拦截器和过滤器有什么区别_拦截器和过滤器的区别面试简介这几天在回顾Spring的AOP时,对过滤器,拦截器,AOP的关系有点好奇,故记录做以备份。在实现一些公共逻辑的时候,很多功能通过过滤器,拦截器,AOP都能实现,但是不同的方式有不同的效率。具体有什么区别,看下文描述。前后端交互基本逻辑过滤器过滤器拦截的是URLSpring中自定义过滤器(Filter)一般只有一个方法,返回值是void,当请求到达web容器时,会探测当…

    2022年8月23日
    7
  • Python装饰器高级用法

    Python装饰器高级用法

    2020年11月20日
    212
  • 如何搭建自己的git服务器_git 创建远程仓库

    如何搭建自己的git服务器_git 创建远程仓库GitHub,Gitee想来大家都用过,我们的代码就是托管在这些平台上的。因此,你可能好奇为什么我们不自己大家一个git服务器呢?下面,就开始教大家如何一步步搭建自己的git服务器(试验成功的那一刻还是很让人激动的)。我自己的虚拟机是centOS7的,首先肯定要安装git和git-daemon,可以使用自带的yum进行安装。yuminstall-ygityuminstall-ygit-daemon虚拟机服务端创建git目录[root@ma.

    2022年9月25日
    2

发表回复

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

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